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つを試してチャットを始めてください