當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python sklearn ColumnTransformer用法及代碼示例


本文簡要介紹python語言中 sklearn.compose.ColumnTransformer 的用法。

用法:

class sklearn.compose.ColumnTransformer(transformers, *, remainder='drop', sparse_threshold=0.3, n_jobs=None, transformer_weights=None, verbose=False, verbose_feature_names_out=True)

將轉換器應用於數組或 pandas DataFrame 的列。

該估計器允許單獨轉換輸入的不同列或列子集,並且每個轉換器生成的特征將連接起來形成單個特征空間。這對於異構或列數據很有用,可以將多個特征提取機製或轉換組合到單個轉換器中。

在用戶指南中閱讀更多信息。

參數

transformers元組列表

(名稱、轉換器、列)元組列表,指定要應用於數據子集的轉換器對象。

名字str

就像在 Pipeline 和 FeatureUnion 中一樣,這允許使用 set_params 設置轉換器及其參數並在網格搜索中進行搜索。

transformer{‘drop’, ‘passthrough’} 或估算器

估算器必須支持擬合和變換。 Special-cased 字符串 ‘drop’ 和 ‘passthrough’ 也被接受,分別指示刪除列或將它們傳遞給未轉換的列。

str、str 的類似數組、int、int 的類似數組、bool、slice 或 callable 的類似數組

在第二個軸上索引數據。整數被解釋為位置列,而字符串可以按名稱引用 DataFrame 列。當 transformer 期望 X 是一個一維數組(向量)時,應該使用標量字符串或 int,否則一個二維數組將被傳遞給轉換器。可調用對象傳遞輸入數據X,並且可以返回上述任何數據。要按名稱或數據類型選擇多個列,可以使用 make_column_selector

remainder{‘drop’, ‘passthrough’} 或估計器,默認='drop'

默認情況下,隻有 transformers 中的指定列在輸出中進行轉換和組合,而未指定的列將被刪除。 (默認為 'drop' )。通過指定 remainder='passthrough' ,將自動傳遞所有未在 transformers 中指定的剩餘列。該列子集與轉換器的輸出連接。通過將remainder 設置為估計器,其餘未指定的列將使用remainder 估計器。估計器必須支持擬合和變換。請注意,使用此函數需要 DataFrame 列輸入 fit 和 transform 具有相同的順序。

sparse_threshold浮點數,默認=0.3

如果不同轉換器的輸出包含稀疏矩陣,如果整體密度低於此值,則這些將堆疊為稀疏矩陣。使用 sparse_threshold=0 始終返回密集。當轉換後的輸出由所有密集數據組成時,堆疊的結果將是密集的,該關鍵字將被忽略。

n_jobs整數,默認=無

並行運行的作業數。 None 表示 1,除非在 joblib.parallel_backend 上下文中。 -1 表示使用所有處理器。有關詳細信息,請參閱詞匯表。

transformer_weights字典,默認=無

每個轉換器的特征的乘法權重。轉換器的輸出乘以這些權重。鍵是轉換器名稱,值是權重。

verbose布爾,默認=假

如果為 True,則在安裝每個轉換器時經過的時間將在完成時打印。

verbose_feature_names_out布爾,默認=真

如果為 True,get_feature_names_out 將在所有特征名稱前加上生成該特征的轉換器名稱。如果為 False,get_feature_names_out 將不會為任何函數名稱添加前綴,並且如果函數名稱不唯一,則會出錯。

屬性

transformers_列表

已安裝轉換器的集合,作為(名稱、fitted_transformer、列)的元組。 fitted_transformer 可以是估計器、‘drop’ 或 ‘passthrough’。如果沒有選擇任何列,則這將是未安裝的轉換器。如果還有剩餘列,則最終元素是以下形式的元組:(‘remainder’、transformer、remaining_columns),對應於remainder 參數。如果還有剩餘列,則為 len(transformers_)==len(transformers)+1 ,否則為 len(transformers_)==len(transformers)

named_transformers_sklearn.utils.Bunch

按名稱訪問已安裝的轉換器。

sparse_output_bool

指示 transform 的輸出是稀疏矩陣還是密集 numpy 數組的布爾標誌,這取決於各個轉換器的輸出和 sparse_threshold 關鍵字。

output_indices_dict

從每個轉換器名稱到切片的字典,其中切片對應於轉換後的輸出中的索引。這對於檢查哪個轉換器負責哪個轉換特征很有用。

n_features_in_int

擬合期間看到的特征數。僅當底層轉換器在合適時公開此類屬性時才定義。

注意

轉換後的特征矩陣中列的順序遵循 transformers 列表中列的指定順序。除非在 passthrough 關鍵字中指定,否則未指定的原始特征矩陣的列將從生成的轉換特征矩陣中刪除。用passthrough 指定的那些列被添加到轉換器輸出的右側。

例子

>>> import numpy as np
>>> from sklearn.compose import ColumnTransformer
>>> from sklearn.preprocessing import Normalizer
>>> ct = ColumnTransformer(
...     [("norm1", Normalizer(norm='l1'), [0, 1]),
...      ("norm2", Normalizer(norm='l1'), slice(2, 4))])
>>> X = np.array([[0., 1., 2., 2.],
...               [1., 1., 0., 1.]])
>>> # Normalizer scales each row of X to unit norm. A separate scaling
>>> # is applied for the two first and two last elements of each
>>> # row independently.
>>> ct.fit_transform(X)
array([[0. , 1. , 0.5, 0.5],
       [0.5, 0.5, 0. , 1. ]])

相關用法


注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.compose.ColumnTransformer。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。