ColumnTransformer
Beim Aufruf von .fit_transform(X) auf einer Pipeline wird jeder Transformer auf alle Spalten angewendet, was nicht immer erwünscht ist. Manche Spalten benötigen unterschiedliche Encoder — zum Beispiel OrdinalEncoder für ordinale Merkmale und OneHotEncoder für nominale Merkmale.
ColumnTransformer löst dieses Problem, indem Sie verschiedene Transformer bestimmten Spalten mit make_column_transformer zuweisen können.
make_column_transformer akzeptiert Tupel der Form (transformer, [columns]).
Beispielsweise kann OrdinalEncoder auf 'education' und OneHotEncoder auf 'gender' angewendet werden:
ct = make_column_transformer(
(OrdinalEncoder(), ['education']),
(OneHotEncoder(), ['gender']),
remainder='passthrough'
)
remainder steuert, was mit nicht spezifizierten Spalten geschieht.
Standard: 'drop'.
Um alle anderen Spalten unverändert zu lassen, remainder='passthrough' setzen.
Zum Beispiel enthält die Datei exams.csv mehrere nominale Spalten ('gender', 'race/ethnicity', 'lunch', 'test preparation course') und eine ordinale Spalte, '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())
Mit ColumnTransformer können nominale Daten mit OneHotEncoder und ordinale Daten mit OrdinalEncoder in einem einzigen Schritt transformiert werden.
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))
Der ColumnTransformer ist selbst ein Transformer und stellt daher die Standardmethoden .fit(), .fit_transform() und .transform() bereit.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Can you explain what the `remainder='passthrough'` argument does?
How do I know which columns are nominal or ordinal in my own dataset?
Can you show how to use the transformed data in a machine learning model?
Großartig!
Completion Rate verbessert auf 3.13
ColumnTransformer
Swipe um das Menü anzuzeigen
Beim Aufruf von .fit_transform(X) auf einer Pipeline wird jeder Transformer auf alle Spalten angewendet, was nicht immer erwünscht ist. Manche Spalten benötigen unterschiedliche Encoder — zum Beispiel OrdinalEncoder für ordinale Merkmale und OneHotEncoder für nominale Merkmale.
ColumnTransformer löst dieses Problem, indem Sie verschiedene Transformer bestimmten Spalten mit make_column_transformer zuweisen können.
make_column_transformer akzeptiert Tupel der Form (transformer, [columns]).
Beispielsweise kann OrdinalEncoder auf 'education' und OneHotEncoder auf 'gender' angewendet werden:
ct = make_column_transformer(
(OrdinalEncoder(), ['education']),
(OneHotEncoder(), ['gender']),
remainder='passthrough'
)
remainder steuert, was mit nicht spezifizierten Spalten geschieht.
Standard: 'drop'.
Um alle anderen Spalten unverändert zu lassen, remainder='passthrough' setzen.
Zum Beispiel enthält die Datei exams.csv mehrere nominale Spalten ('gender', 'race/ethnicity', 'lunch', 'test preparation course') und eine ordinale Spalte, '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())
Mit ColumnTransformer können nominale Daten mit OneHotEncoder und ordinale Daten mit OrdinalEncoder in einem einzigen Schritt transformiert werden.
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))
Der ColumnTransformer ist selbst ein Transformer und stellt daher die Standardmethoden .fit(), .fit_transform() und .transform() bereit.
Danke für Ihr Feedback!