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

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

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-muuntimella ja ordinaalidatan OrdinalEncoder-muuntimella 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

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

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-muuntimella ja ordinaalidatan OrdinalEncoder-muuntimella 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