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

bookKolonnetransformator

Ser vi fremover, når du kaller metoden .fit_transform(X) på et Pipeline-objekt, anvender den hver transformer på hele settet av funksjoner i X. Dette er imidlertid ikke alltid ønskelig.

For eksempel ønsker du kanskje ikke å kode numeriske verdier, eller du kan ha behov for å bruke forskjellige transformere på spesifikke kolonner — som å bruke OrdinalEncoder for ordinale funksjoner og OneHotEncoder for nominale funksjoner.

ColumnTransformer løser dette ved å tillate at hver kolonne behandles separat. For å opprette en ColumnTransformer, kan du bruke funksjonen make_column_transformer fra modulen sklearn.compose.

Funksjonen tar som argumenter tupler med transformeren og listen over kolonner denne transformeren skal brukes på.

For eksempel kan vi opprette en ColumnTransformer som bruker OrdinalEncoder kun på kolonnen 'education' og OneHotEncoder kun på kolonnen 'gender'.

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

Argumentet remainder angir hva som skal gjøres med kolonner som ikke er nevnt i make_column_transformer (i dette tilfellet kolonner andre enn 'gender' og 'education').

Som standard er den satt til 'drop', noe som betyr at alle ikke-nevnte kolonner blir fjernet fra datasettet. For å inkludere disse kolonnene uberørt i utdataene, sett remainder til 'passthrough'.

For eksempel, vurder filen exams.csv. Den inneholder flere nominale kolonner ('gender', 'race/ethnicity', 'lunch', 'test preparation course') og én ordinale 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 å bruke ColumnTransformer kan nominale data transformeres med OneHotEncoder og ordinale data med OrdinalEncoder i ett enkelt 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 er selv en transformer, og tilbyr derfor de standard metodene .fit(), .fit_transform() og .transform().

question mark

Anta at du har et datasett med egenskapene 'education', 'income', 'job'. Hva vil skje med kolonnen 'income' etter at følgende kode kjøres? (Merk at argumentet remainder ikke er spesifisert)

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 2

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

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

bookKolonnetransformator

Sveip for å vise menyen

Ser vi fremover, når du kaller metoden .fit_transform(X) på et Pipeline-objekt, anvender den hver transformer på hele settet av funksjoner i X. Dette er imidlertid ikke alltid ønskelig.

For eksempel ønsker du kanskje ikke å kode numeriske verdier, eller du kan ha behov for å bruke forskjellige transformere på spesifikke kolonner — som å bruke OrdinalEncoder for ordinale funksjoner og OneHotEncoder for nominale funksjoner.

ColumnTransformer løser dette ved å tillate at hver kolonne behandles separat. For å opprette en ColumnTransformer, kan du bruke funksjonen make_column_transformer fra modulen sklearn.compose.

Funksjonen tar som argumenter tupler med transformeren og listen over kolonner denne transformeren skal brukes på.

For eksempel kan vi opprette en ColumnTransformer som bruker OrdinalEncoder kun på kolonnen 'education' og OneHotEncoder kun på kolonnen 'gender'.

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

Argumentet remainder angir hva som skal gjøres med kolonner som ikke er nevnt i make_column_transformer (i dette tilfellet kolonner andre enn 'gender' og 'education').

Som standard er den satt til 'drop', noe som betyr at alle ikke-nevnte kolonner blir fjernet fra datasettet. For å inkludere disse kolonnene uberørt i utdataene, sett remainder til 'passthrough'.

For eksempel, vurder filen exams.csv. Den inneholder flere nominale kolonner ('gender', 'race/ethnicity', 'lunch', 'test preparation course') og én ordinale 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 å bruke ColumnTransformer kan nominale data transformeres med OneHotEncoder og ordinale data med OrdinalEncoder i ett enkelt 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 er selv en transformer, og tilbyr derfor de standard metodene .fit(), .fit_transform() og .transform().

question mark

Anta at du har et datasett med egenskapene 'education', 'income', 'job'. Hva vil skje med kolonnen 'income' etter at følgende kode kjøres? (Merk at argumentet remainder ikke er spesifisert)

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 2
some-alt