ColumnTransformer
メニューを表示するにはスワイプしてください
.fit_transform(X) で Pipeline を呼び出すと、各トランスフォーマーがすべてのカラムに適用されますが、これは常に望ましいわけではありません。カラムごとに異なるエンコーダーが必要な場合があります。たとえば、順序特徴量には OrdinalEncoder、名義特徴量には OneHotEncoder を使用します。
ColumnTransformer を使うことで、make_column_transformer を利用して特定のカラムに異なるトランスフォーマーを割り当てることができます。
make_column_transformer は (transformer, [columns]) のタプルを受け取ります。
例えば、OrdinalEncoder に 'education' を、OneHotEncoder に 'gender' を適用する場合:
ct = make_column_transformer(
(OrdinalEncoder(), ['education']),
(OneHotEncoder(), ['gender']),
remainder='passthrough'
)
remainderは、指定されていない列に対して何が行われるかを制御。
デフォルト: 'drop'。
他のすべての列を変更せずに保持するには、remainder='passthrough'を設定。
例として、exams.csvファイルを考慮。複数の名義列('gender'、'race/ethnicity'、'lunch'、'test preparation course')と1つの順序列('parental level of education')を含む。
12345import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/exams.csv') print(df.head())
ColumnTransformer を使用すると、名義データは OneHotEncoder で、順序データは OrdinalEncoder で 一度に変換 可能。
12345678910111213from sklearn.compose import make_column_transformer from sklearn.preprocessing import OneHotEncoder, OrdinalEncoder edu_categories = ['high school', 'some high school', 'some college', "associate's degree", "bachelor's degree", "master's degree"] ct = make_column_transformer( (OrdinalEncoder(categories=[edu_categories]), ['parental level of education']), (OneHotEncoder(), ['gender', 'race/ethnicity', 'lunch', 'test preparation course']), remainder='passthrough' ) print(ct.fit_transform(df))
ColumnTransformer 自体もトランスフォーマーであり、標準メソッド .fit()、.fit_transform()、.transform() を提供。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください