Kategoristen 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']])
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']])
Vaikka one-hot-koodaus ei aseta järjestystä ja sopii nominaalisille ominaisuuksille, se voi kasvattaa aineiston ulottuvuutta.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
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
Kategoristen 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']])
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']])
Vaikka one-hot-koodaus ei aseta järjestystä ja sopii nominaalisille ominaisuuksille, se voi kasvattaa aineiston ulottuvuutta.
Kiitos palautteestasi!