Sarakemuunnin
Tulevaisuutta ajatellen, kun kutsut .fit_transform(X)
-metodia Pipeline
-oliolle, se soveltaa jokaista muunninta kaikkiin X
-ominaisuuksiin. Tämä ei kuitenkaan aina ole toivottavaa.
Esimerkiksi et ehkä halua koodata numeerisia arvoja tai saatat tarvita eri muuntimia eri sarakkeille — kuten käyttää OrdinalEncoder
-muunninta järjestysasteikollisille ominaisuuksille ja OneHotEncoder
-muunninta nimellisille ominaisuuksille.
ColumnTransformer
ratkaisee tämän ongelman mahdollistamalla jokaisen sarakkeen käsittelyn erikseen. ColumnTransformer
-olion voi luoda käyttämällä make_column_transformer
-funktiota, joka löytyy sklearn.compose
-moduulista.
Funktio ottaa argumentteina tupleja, joissa on muunnin ja lista sarakkeista, joihin kyseinen muunnin sovelletaan.
Esimerkiksi voimme luoda ColumnTransformer
-olion, joka soveltaa OrdinalEncoder
-muunninta vain 'education'
-sarakkeeseen ja OneHotEncoder
-muunninta vain 'gender'
-sarakkeeseen.
ct = make_column_transformer(
(OrdinalEncoder(), ['education']),
(OneHotEncoder(), ['gender']), remainder='passthrough'
)
remainder
-argumentti määrittää, mitä tehdään sarakkeille, joita ei mainita make_column_transformer
-funktiossa (tässä tapauksessa muille kuin 'gender'
ja 'education'
sarakkeille).
Oletuksena arvo on 'drop'
, eli kaikki mainitsemattomat sarakkeet poistetaan aineistosta. Jos haluat sisällyttää nämä sarakkeet koskemattomina lopputulokseen, aseta remainder
arvoksi 'passthrough'
.
Esimerkiksi tiedostossa exams.csv
on useita nominaalisia sarakkeita ('gender'
, 'race/ethnicity'
, 'lunch'
, 'test preparation course'
) ja yksi ordinaalinen sarake, '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())
ColumnTransformer
-luokan avulla nominaalidatan voi muuntaa OneHotEncoder
-muuntimella ja ordinaalidatan OrdinalEncoder
-muuntimella yhdessä vaiheessa.
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
on itsessään muunnin, joten se tarjoaa vakiomenetelmät .fit()
, .fit_transform()
ja .transform()
.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
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
Sarakemuunnin
Pyyhkäise näyttääksesi valikon
Tulevaisuutta ajatellen, kun kutsut .fit_transform(X)
-metodia Pipeline
-oliolle, se soveltaa jokaista muunninta kaikkiin X
-ominaisuuksiin. Tämä ei kuitenkaan aina ole toivottavaa.
Esimerkiksi et ehkä halua koodata numeerisia arvoja tai saatat tarvita eri muuntimia eri sarakkeille — kuten käyttää OrdinalEncoder
-muunninta järjestysasteikollisille ominaisuuksille ja OneHotEncoder
-muunninta nimellisille ominaisuuksille.
ColumnTransformer
ratkaisee tämän ongelman mahdollistamalla jokaisen sarakkeen käsittelyn erikseen. ColumnTransformer
-olion voi luoda käyttämällä make_column_transformer
-funktiota, joka löytyy sklearn.compose
-moduulista.
Funktio ottaa argumentteina tupleja, joissa on muunnin ja lista sarakkeista, joihin kyseinen muunnin sovelletaan.
Esimerkiksi voimme luoda ColumnTransformer
-olion, joka soveltaa OrdinalEncoder
-muunninta vain 'education'
-sarakkeeseen ja OneHotEncoder
-muunninta vain 'gender'
-sarakkeeseen.
ct = make_column_transformer(
(OrdinalEncoder(), ['education']),
(OneHotEncoder(), ['gender']), remainder='passthrough'
)
remainder
-argumentti määrittää, mitä tehdään sarakkeille, joita ei mainita make_column_transformer
-funktiossa (tässä tapauksessa muille kuin 'gender'
ja 'education'
sarakkeille).
Oletuksena arvo on 'drop'
, eli kaikki mainitsemattomat sarakkeet poistetaan aineistosta. Jos haluat sisällyttää nämä sarakkeet koskemattomina lopputulokseen, aseta remainder
arvoksi 'passthrough'
.
Esimerkiksi tiedostossa exams.csv
on useita nominaalisia sarakkeita ('gender'
, 'race/ethnicity'
, 'lunch'
, 'test preparation course'
) ja yksi ordinaalinen sarake, '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())
ColumnTransformer
-luokan avulla nominaalidatan voi muuntaa OneHotEncoder
-muuntimella ja ordinaalidatan OrdinalEncoder
-muuntimella yhdessä vaiheessa.
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
on itsessään muunnin, joten se tarjoaa vakiomenetelmät .fit()
, .fit_transform()
ja .transform()
.
Kiitos palautteestasi!