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!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen