Kolonnetransformator
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'
)
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'
.
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 å bruke ColumnTransformer
kan nominale data transformeres med OneHotEncoder
og ordinale data med OrdinalEncoder
i ett enkelt steg.
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, og tilbyr derfor de standard metodene .fit()
, .fit_transform()
og .transform()
.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
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
Kolonnetransformator
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'
)
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'
.
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 å bruke ColumnTransformer
kan nominale data transformeres med OneHotEncoder
og ordinale data med OrdinalEncoder
i ett enkelt steg.
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, og tilbyr derfor de standard metodene .fit()
, .fit_transform()
og .transform()
.
Takk for tilbakemeldingene dine!