KolonneTransformer
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'
)
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'
.
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())
Ved at bruge ColumnTransformer
kan nominelle data transformeres med OneHotEncoder
og ordnede data med OrdinalEncoder
i ét enkelt trin.
123456789101112131415import 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))
ColumnTransformer
er selv en transformer, så den tilbyder de standardmetoderne .fit()
, .fit_transform()
og .transform()
.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
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
KolonneTransformer
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'
)
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'
.
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())
Ved at bruge ColumnTransformer
kan nominelle data transformeres med OneHotEncoder
og ordnede data med OrdinalEncoder
i ét enkelt trin.
123456789101112131415import 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))
ColumnTransformer
er selv en transformer, så den tilbyder de standardmetoderne .fit()
, .fit_transform()
og .transform()
.
Tak for dine kommentarer!