Sarakemuunnin
Kun kutsut .fit_transform(X) -metodia Pipeline-oliolle, se soveltaa jokaista muunninta kaikkiin piirteisiin X:ssä. Tämä ei kuitenkaan aina ole toivottua.
Esimerkiksi et ehkä halua koodata numeerisia arvoja tai saatat tarvita eri muuntimia eri sarakkeille — kuten käyttää OrdinalEncoder-muunninta järjestysasteikollisille piirteille ja OneHotEncoder-muunninta nimellisille piirteille.
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', jolloin kaikki mainitsemattomat sarakkeet poistetaan aineistosta. Jos haluat sisällyttää nämä sarakkeet koskemattomina tulokseen, aseta remainder arvoksi 'passthrough'.
Esimerkiksi tarkastellaan tiedostoa exams.csv. Se sisältää useita nominaalisia sarakkeita ('gender', 'race/ethnicity', 'lunch', 'test preparation course') sekä yhden ordinaalisen sarakkeen, '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-muotoon ja ordinaalidatan OrdinalEncoder-muotoon 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
Kun kutsut .fit_transform(X) -metodia Pipeline-oliolle, se soveltaa jokaista muunninta kaikkiin piirteisiin X:ssä. Tämä ei kuitenkaan aina ole toivottua.
Esimerkiksi et ehkä halua koodata numeerisia arvoja tai saatat tarvita eri muuntimia eri sarakkeille — kuten käyttää OrdinalEncoder-muunninta järjestysasteikollisille piirteille ja OneHotEncoder-muunninta nimellisille piirteille.
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', jolloin kaikki mainitsemattomat sarakkeet poistetaan aineistosta. Jos haluat sisällyttää nämä sarakkeet koskemattomina tulokseen, aseta remainder arvoksi 'passthrough'.
Esimerkiksi tarkastellaan tiedostoa exams.csv. Se sisältää useita nominaalisia sarakkeita ('gender', 'race/ethnicity', 'lunch', 'test preparation course') sekä yhden ordinaalisen sarakkeen, '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-muotoon ja ordinaalidatan OrdinalEncoder-muotoon 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!