Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Kolumntransformer | Pipelines
ML-introduktion Med Scikit-learn

bookKolumntransformer

Framåtblickande, när du anropar metoden .fit_transform(X) på ett Pipeline-objekt, appliceras varje transformerare på hela uppsättningen av funktioner i X. Detta beteende är dock inte alltid önskvärt.

Till exempel kanske du inte vill koda numeriska värden eller så kan du behöva använda olika transformerare på specifika kolumner — såsom att använda OrdinalEncoder för ordnade funktioner och OneHotEncoder för nominella funktioner.

ColumnTransformer löser detta problem genom att låta varje kolumn behandlas separat. För att skapa en ColumnTransformer kan du använda funktionen make_column_transformer från modulen sklearn.compose.

Funktionen tar som argument tupler med transformeraren och listan av kolumner som denna transformerare ska appliceras på.

Till exempel kan vi skapa en ColumnTransformer som applicerar OrdinalEncoder endast på kolumnen 'education' och OneHotEncoder endast på kolumnen 'gender'.

ct = make_column_transformer(
   (OrdinalEncoder(), ['education']),
   (OneHotEncoder(), ['gender']), remainder='passthrough'
)
Note
Notera

Argumentet remainder anger åtgärden för kolumner som inte nämns i make_column_transformer (i detta fall, andra kolumner än 'gender' och 'education').

Som standard är det satt till 'drop', vilket innebär att alla icke nämnda kolumner tas bort från datasetet. För att inkludera dessa kolumner oförändrade i utdata, sätt remainder till 'passthrough'.

Till exempel, överväg filen exams.csv. Den innehåller flera nominala kolumner ('gender', 'race/ethnicity', 'lunch', 'test preparation course') och en ordinal kolumn, '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

Med hjälp av ColumnTransformer kan nominella data transformeras med OneHotEncoder och ordnala data med OrdinalEncoder i ett enda steg.

123456789101112131415
import pandas as pd from sklearn.compose import make_column_transformer from sklearn.preprocessing import OneHotEncoder, OrdinalEncoder df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/exams.csv') # Ordered categories of parental level of education for OrdinalEncoder edu_categories = ['high school', 'some high school', 'some college', "associate's degree", "bachelor's degree", "master's degree"] # Making a column transformer 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

ColumnTransformer är i sig själv en transformerare, så den tillhandahåller de standardiserade metoderna .fit(), .fit_transform() och .transform().

question mark

Antag att du har en datamängd med funktionerna 'education', 'income', 'job'. Vad händer med kolumnen 'income' efter att följande kod har körts? (Observera att argumentet remainder inte är specificerat)

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 2

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Suggested prompts:

Can you explain what the `remainder='passthrough'` argument does?

How do I specify custom order for ordinal categories in `OrdinalEncoder`?

What does the output of `ct.fit_transform(df)` look like?

Awesome!

Completion rate improved to 3.13

bookKolumntransformer

Svep för att visa menyn

Framåtblickande, när du anropar metoden .fit_transform(X) på ett Pipeline-objekt, appliceras varje transformerare på hela uppsättningen av funktioner i X. Detta beteende är dock inte alltid önskvärt.

Till exempel kanske du inte vill koda numeriska värden eller så kan du behöva använda olika transformerare på specifika kolumner — såsom att använda OrdinalEncoder för ordnade funktioner och OneHotEncoder för nominella funktioner.

ColumnTransformer löser detta problem genom att låta varje kolumn behandlas separat. För att skapa en ColumnTransformer kan du använda funktionen make_column_transformer från modulen sklearn.compose.

Funktionen tar som argument tupler med transformeraren och listan av kolumner som denna transformerare ska appliceras på.

Till exempel kan vi skapa en ColumnTransformer som applicerar OrdinalEncoder endast på kolumnen 'education' och OneHotEncoder endast på kolumnen 'gender'.

ct = make_column_transformer(
   (OrdinalEncoder(), ['education']),
   (OneHotEncoder(), ['gender']), remainder='passthrough'
)
Note
Notera

Argumentet remainder anger åtgärden för kolumner som inte nämns i make_column_transformer (i detta fall, andra kolumner än 'gender' och 'education').

Som standard är det satt till 'drop', vilket innebär att alla icke nämnda kolumner tas bort från datasetet. För att inkludera dessa kolumner oförändrade i utdata, sätt remainder till 'passthrough'.

Till exempel, överväg filen exams.csv. Den innehåller flera nominala kolumner ('gender', 'race/ethnicity', 'lunch', 'test preparation course') och en ordinal kolumn, '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

Med hjälp av ColumnTransformer kan nominella data transformeras med OneHotEncoder och ordnala data med OrdinalEncoder i ett enda steg.

123456789101112131415
import pandas as pd from sklearn.compose import make_column_transformer from sklearn.preprocessing import OneHotEncoder, OrdinalEncoder df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/exams.csv') # Ordered categories of parental level of education for OrdinalEncoder edu_categories = ['high school', 'some high school', 'some college', "associate's degree", "bachelor's degree", "master's degree"] # Making a column transformer 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

ColumnTransformer är i sig själv en transformerare, så den tillhandahåller de standardiserade metoderna .fit(), .fit_transform() och .transform().

question mark

Antag att du har en datamängd med funktionerna 'education', 'income', 'job'. Vad händer med kolumnen 'income' efter att följande kod har körts? (Observera att argumentet remainder inte är specificerat)

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 2
some-alt