KolonneTransformer
Fremadrettet, når du anvender .fit_transform(X)-metoden på et Pipeline-objekt, anvendes 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 har 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 ordinale 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 brug af ColumnTransformer kan nominelle data transformeres med OneHotEncoder og ordinale 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 standardmetoder: .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, anvendes 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 har 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 ordinale 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 brug af ColumnTransformer kan nominelle data transformeres med OneHotEncoder og ordinale 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 standardmetoder: .fit(), .fit_transform() og .transform().
Tak for dine kommentarer!