Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Sarakemuunnin | Putkistot
Koneoppimisen Perusteet Scikit-learnilla

bookSarakemuunnin

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'
)
Note
Huomio

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'.

12345
import 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())
copy

ColumnTransformer-luokan avulla nominaalidatan voi muuntaa OneHotEncoder-muotoon ja ordinaalidatan OrdinalEncoder-muotoon yhdessä vaiheessa.

123456789101112131415
import 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))
copy

ColumnTransformer on itsessään muunnin, joten se tarjoaa vakiomenetelmät .fit(), .fit_transform() ja .transform().

question mark

Oletetaan, että sinulla on tietojoukko, jossa on ominaisuudet 'education', 'income', 'job'. Mitä tapahtuu 'income'-sarakkeelle, kun suoritat seuraavan koodin? (Huomaa, että remainder-argumenttia ei ole määritelty)

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 2

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Awesome!

Completion rate improved to 3.13

bookSarakemuunnin

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'
)
Note
Huomio

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'.

12345
import 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())
copy

ColumnTransformer-luokan avulla nominaalidatan voi muuntaa OneHotEncoder-muotoon ja ordinaalidatan OrdinalEncoder-muotoon yhdessä vaiheessa.

123456789101112131415
import 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))
copy

ColumnTransformer on itsessään muunnin, joten se tarjoaa vakiomenetelmät .fit(), .fit_transform() ja .transform().

question mark

Oletetaan, että sinulla on tietojoukko, jossa on ominaisuudet 'education', 'income', 'job'. Mitä tapahtuu 'income'-sarakkeelle, kun suoritat seuraavan koodin? (Huomaa, että remainder-argumenttia ei ole määritelty)

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 2
some-alt