Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Kategoristen Ominaisuuksien Koodaus | Ydinkäsitteet
Klusterianalyysi

bookKategoristen Ominaisuuksien Koodaus

Klusterointialgoritmit kuten K-means vaativat numeerista dataa. Kategoriset ominaisuudet täytyy muuntaa numeeriseen muotoon koodaamalla. Opit ordinaali- ja one-hot-koodauksesta.

Ordinaalikoodaus

Ordinaalikoodaus muuntaa järjestetyt kategoriat numeerisiksi arvoiksi säilyttäen niiden järjestyksen. Esimerkiksi sarakkeen 'education_level' ordinaalikoodaus muuttaa arvot "High School", "Bachelor's", "Master's", 'PhD' arvoiksi 0, 1, 2, 3.

Tämä olettaa, että koodattujen arvojen välillä on merkityksellinen numeerinen ero, mikä ei aina pidä paikkaansa.

from sklearn.preprocessing import OrdinalEncoder

education_levels = [['High School',
                     "Bachelor's",
                     "Master's",
                     "PhD"]]
encoder = OrdinalEncoder(categories=education_levels)

df[['education_encoded']] = encoder.fit_transform(df[['education_level']]) 
Note
Huomio

Tällaista koodausta tulisi käyttää vain ordinaalisille ominaisuuksille, joissa kategorioiden järjestyksellä on merkitystä.

One-Hot-koodaus

One-hot-koodaus muuntaa nominaaliset (järjestämättömät) kategoriat binäärisiksi sarakkeiksi, joissa jokainen kategoria muodostaa uuden sarakkeen. Jos ominaisuudella on n kategoriaa, tämä luo tyypillisesti n saraketta — yhdessä sarakkeessa arvo on 1 kyseiselle kategorialle ja muissa 0. Kuitenkin vain n-1 saraketta tarvitaan tiedon esittämiseen ilman redundanssia.

Esimerkiksi 'color'-sarakkeen arvot 'red', 'blue' ja 'green' voidaan koodata vain kahdella sarakkeella: 'color_red' ja 'color_blue'. Jos rivillä on 0 molemmissa, se tarkoittaa, että väri on 'green'. Pudottamalla yksi sarake vältetään redundanssi.

Redundantin sarakkeen poistaminen määritellään parametrilla drop='first':

from sklearn.preprocessing import OneHotEncoder 

encoder = OneHotEncoder(drop='first', sparse=False) 

encoded = encoder.fit_transform(df[['color']]) 
Note
Huomio

Vaikka one-hot-koodaus ei aseta järjestystä ja sopii nominaalisille ominaisuuksille, se voi kasvattaa aineiston ulottuvuutta.

question mark

Mikä koodausmenetelmä sopii parhaiten kategoriselle ominaisuudelle kuten 'country', jonka arvoja ovat esimerkiksi "USA", "Canada" ja "Germany", eikä niillä ole luonnollista järjestystä?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 2

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Suggested prompts:

Can you explain the difference between ordinal and one-hot encoding in more detail?

When should I use ordinal encoding versus one-hot encoding?

Can you give more examples of categorical features and how to encode them?

Awesome!

Completion rate improved to 2.94

bookKategoristen Ominaisuuksien Koodaus

Pyyhkäise näyttääksesi valikon

Klusterointialgoritmit kuten K-means vaativat numeerista dataa. Kategoriset ominaisuudet täytyy muuntaa numeeriseen muotoon koodaamalla. Opit ordinaali- ja one-hot-koodauksesta.

Ordinaalikoodaus

Ordinaalikoodaus muuntaa järjestetyt kategoriat numeerisiksi arvoiksi säilyttäen niiden järjestyksen. Esimerkiksi sarakkeen 'education_level' ordinaalikoodaus muuttaa arvot "High School", "Bachelor's", "Master's", 'PhD' arvoiksi 0, 1, 2, 3.

Tämä olettaa, että koodattujen arvojen välillä on merkityksellinen numeerinen ero, mikä ei aina pidä paikkaansa.

from sklearn.preprocessing import OrdinalEncoder

education_levels = [['High School',
                     "Bachelor's",
                     "Master's",
                     "PhD"]]
encoder = OrdinalEncoder(categories=education_levels)

df[['education_encoded']] = encoder.fit_transform(df[['education_level']]) 
Note
Huomio

Tällaista koodausta tulisi käyttää vain ordinaalisille ominaisuuksille, joissa kategorioiden järjestyksellä on merkitystä.

One-Hot-koodaus

One-hot-koodaus muuntaa nominaaliset (järjestämättömät) kategoriat binäärisiksi sarakkeiksi, joissa jokainen kategoria muodostaa uuden sarakkeen. Jos ominaisuudella on n kategoriaa, tämä luo tyypillisesti n saraketta — yhdessä sarakkeessa arvo on 1 kyseiselle kategorialle ja muissa 0. Kuitenkin vain n-1 saraketta tarvitaan tiedon esittämiseen ilman redundanssia.

Esimerkiksi 'color'-sarakkeen arvot 'red', 'blue' ja 'green' voidaan koodata vain kahdella sarakkeella: 'color_red' ja 'color_blue'. Jos rivillä on 0 molemmissa, se tarkoittaa, että väri on 'green'. Pudottamalla yksi sarake vältetään redundanssi.

Redundantin sarakkeen poistaminen määritellään parametrilla drop='first':

from sklearn.preprocessing import OneHotEncoder 

encoder = OneHotEncoder(drop='first', sparse=False) 

encoded = encoder.fit_transform(df[['color']]) 
Note
Huomio

Vaikka one-hot-koodaus ei aseta järjestystä ja sopii nominaalisille ominaisuuksille, se voi kasvattaa aineiston ulottuvuutta.

question mark

Mikä koodausmenetelmä sopii parhaiten kategoriselle ominaisuudelle kuten 'country', jonka arvoja ovat esimerkiksi "USA", "Canada" ja "Germany", eikä niillä ole luonnollista järjestystä?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 2
some-alt