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
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!