Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære KolonneTransformer | Pipelines
ML Introduktion med Scikit-learn

bookKolonneTransformer

Fremadrettet, når du anvender .fit_transform(X)-metoden på et Pipeline-objekt, anvender den hver transformer på hele sættet af features i X. Denne adfærd er dog ikke altid ønskelig.

For eksempel ønsker du måske ikke at kode numeriske værdier, eller du kan have behov for at anvende forskellige transformere på specifikke kolonner — såsom at bruge OrdinalEncoder til ordinale features og OneHotEncoder til nominale features.

ColumnTransformer løser dette problem ved at tillade, at hver kolonne behandles separat. For at oprette en ColumnTransformer kan du benytte funktionen make_column_transformer fra modulet sklearn.compose.

Funktionen tager som argumenter tupler med transformeren og listen af kolonner, som denne transformer skal anvendes på.

For eksempel kan vi oprette en ColumnTransformer, der anvender OrdinalEncoder kun på kolonnen 'education' og OneHotEncoder kun på kolonnen 'gender'.

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

Argumentet remainder angiver, hvilken handling der skal foretages med kolonner, der ikke er nævnt i make_column_transformer (i dette tilfælde kolonner andre end 'gender' og 'education').

Som standard er den sat til 'drop', hvilket betyder, at alle ikke-nævnte kolonner fjernes fra datasættet. For at inkludere disse kolonner uberørte i outputtet, skal du sætte remainder til 'passthrough'.

For eksempel, overvej filen exams.csv. Den indeholder flere nominale kolonner ('gender', 'race/ethnicity', 'lunch', 'test preparation course') og én ordnede kolonne, '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

Ved at bruge ColumnTransformer kan nominelle data transformeres med OneHotEncoder og ordnede data med OrdinalEncoder i ét enkelt trin.

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 er selv en transformer, så den tilbyder de standardmetoderne .fit(), .fit_transform() og .transform().

question mark

Antag, at du har et datasæt med funktionerne 'education', 'income', 'job'. Hvad sker der med kolonnen 'income', når følgende kode køres? (Bemærk, at argumentet remainder ikke er angivet)

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 2

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

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

bookKolonneTransformer

Stryg for at vise menuen

Fremadrettet, når du anvender .fit_transform(X)-metoden på et Pipeline-objekt, anvender den hver transformer på hele sættet af features i X. Denne adfærd er dog ikke altid ønskelig.

For eksempel ønsker du måske ikke at kode numeriske værdier, eller du kan have behov for at anvende forskellige transformere på specifikke kolonner — såsom at bruge OrdinalEncoder til ordinale features og OneHotEncoder til nominale features.

ColumnTransformer løser dette problem ved at tillade, at hver kolonne behandles separat. For at oprette en ColumnTransformer kan du benytte funktionen make_column_transformer fra modulet sklearn.compose.

Funktionen tager som argumenter tupler med transformeren og listen af kolonner, som denne transformer skal anvendes på.

For eksempel kan vi oprette en ColumnTransformer, der anvender OrdinalEncoder kun på kolonnen 'education' og OneHotEncoder kun på kolonnen 'gender'.

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

Argumentet remainder angiver, hvilken handling der skal foretages med kolonner, der ikke er nævnt i make_column_transformer (i dette tilfælde kolonner andre end 'gender' og 'education').

Som standard er den sat til 'drop', hvilket betyder, at alle ikke-nævnte kolonner fjernes fra datasættet. For at inkludere disse kolonner uberørte i outputtet, skal du sætte remainder til 'passthrough'.

For eksempel, overvej filen exams.csv. Den indeholder flere nominale kolonner ('gender', 'race/ethnicity', 'lunch', 'test preparation course') og én ordnede kolonne, '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

Ved at bruge ColumnTransformer kan nominelle data transformeres med OneHotEncoder og ordnede data med OrdinalEncoder i ét enkelt trin.

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 er selv en transformer, så den tilbyder de standardmetoderne .fit(), .fit_transform() og .transform().

question mark

Antag, at du har et datasæt med funktionerne 'education', 'income', 'job'. Hvad sker der med kolonnen 'income', når følgende kode køres? (Bemærk, at argumentet remainder ikke er angivet)

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 2
some-alt