Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen ColumnTransformer | Pipelines
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Einführung in das Maschinelle Lernen mit Python

bookColumnTransformer

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'
)
Note
Hinweis

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'.

12345
import 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())
copy

Mit ColumnTransformer können nominale Daten mit OneHotEncoder und ordinale Daten mit OrdinalEncoder in einem einzigen Schritt transformiert werden.

12345678910111213
from 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))
copy

Der ColumnTransformer ist selbst ein Transformer und stellt daher die Standardmethoden .fit(), .fit_transform() und .transform() bereit.

question mark

Angenommen, Sie haben einen Datensatz mit den Merkmalen 'education', 'income', 'job'. Was passiert mit der Spalte 'income', nachdem der folgende Code ausgeführt wurde? (Beachten Sie, dass das Argument remainder nicht angegeben ist)

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 2

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Suggested prompts:

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?

bookColumnTransformer

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'
)
Note
Hinweis

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'.

12345
import 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())
copy

Mit ColumnTransformer können nominale Daten mit OneHotEncoder und ordinale Daten mit OrdinalEncoder in einem einzigen Schritt transformiert werden.

12345678910111213
from 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))
copy

Der ColumnTransformer ist selbst ein Transformer und stellt daher die Standardmethoden .fit(), .fit_transform() und .transform() bereit.

question mark

Angenommen, Sie haben einen Datensatz mit den Merkmalen 'education', 'income', 'job'. Was passiert mit der Spalte 'income', nachdem der folgende Code ausgeführt wurde? (Beachten Sie, dass das Argument remainder nicht angegeben ist)

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 2
some-alt