Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele One-Hot-Koodaus | Datan Esikäsittely Scikit-learnilla
Koneoppimisen Perusteet Scikit-learnilla

bookOne-Hot-Koodaus

Kun kyseessä ovat nominaaliset arvot, niiden käsittely on hieman monimutkaisempaa.

Ordinaalisille tiedoille, kuten käyttäjäarvioille välillä 'Kammottava'–'Erinomainen', koodaus numeroiksi 0–4 on sopivaa, koska malli voi hyödyntää järjestyksen.

Sen sijaan ominaisuudelle kuten 'city', jossa on viisi erillistä luokkaa, koodaus numeroiksi 0–4 antaisi virheellisesti vaikutelman järjestyksestä. Tässä tapauksessa one-hot-koodaus on parempi vaihtoehto, koska se esittää luokat ilman hierarkiaa.

Nominaalisen datan koodaamiseen käytetään OneHotEncoder-muunninta. Se luo sarakkeen jokaiselle yksilölliselle arvolle. Jokaisella rivillä asetetaan arvo 1 sen sarakkeen kohdalle, joka vastaa rivin arvoa, ja 0 muihin sarakkeisiin.

Alkuperäinen 'NewYork' on nyt 1 sarakkeessa 'City_NewYork' ja 0 muissa City_-sarakkeissa.

Käytä OneHotEncoder-enkooderia penguins-aineistoon. Nominaaliset ominaisuudet ovat 'island' ja 'sex'. Sarake 'species' on kohde ja käsitellään erikseen, kun käsitellään kohteen koodausta seuraavassa luvussa.

123456
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') print('island: ', df['island'].unique()) print('sex: ', df['sex'].unique())
copy

OneHotEncoder-muuntimen käyttämiseksi alustetaan enkooderiobjekti ja valitut sarakkeet välitetään metodille .fit_transform(), samalla tavalla kuin muidenkin muuntimien kanssa.

1234567891011
import pandas as pd from sklearn.preprocessing import OneHotEncoder df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') # Assign X, y variables y = df['species'] X = df.drop('species', axis=1) # Initialize an OneHotEncoder object one_hot = OneHotEncoder() # Print transformed 'sex', 'island' columns print(one_hot.fit_transform(X[['sex', 'island']]).toarray())
copy
Note
Huomio

.toarray()-metodi muuntaa OneHotEncoder-muuntimen tuottaman harvan matriisin tiheäksi NumPy-taulukoksi. Tiheät taulukot näyttävät kaikki arvot eksplisiittisesti, mikä helpottaa koodatun datan visualisointia ja käsittelyä DataFrame-rakenteessa. Harvat matriisit tallentavat vain nollasta poikkeavat alkiot, mikä tehostaa muistinkäyttöä. Tämän metodin voi jättää pois, jolloin näet eron tulosteessa.

question mark

OneHotEncoder luo uusia sarakkeita. Onko tämä oikein?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 6

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

bookOne-Hot-Koodaus

Pyyhkäise näyttääksesi valikon

Kun kyseessä ovat nominaaliset arvot, niiden käsittely on hieman monimutkaisempaa.

Ordinaalisille tiedoille, kuten käyttäjäarvioille välillä 'Kammottava'–'Erinomainen', koodaus numeroiksi 0–4 on sopivaa, koska malli voi hyödyntää järjestyksen.

Sen sijaan ominaisuudelle kuten 'city', jossa on viisi erillistä luokkaa, koodaus numeroiksi 0–4 antaisi virheellisesti vaikutelman järjestyksestä. Tässä tapauksessa one-hot-koodaus on parempi vaihtoehto, koska se esittää luokat ilman hierarkiaa.

Nominaalisen datan koodaamiseen käytetään OneHotEncoder-muunninta. Se luo sarakkeen jokaiselle yksilölliselle arvolle. Jokaisella rivillä asetetaan arvo 1 sen sarakkeen kohdalle, joka vastaa rivin arvoa, ja 0 muihin sarakkeisiin.

Alkuperäinen 'NewYork' on nyt 1 sarakkeessa 'City_NewYork' ja 0 muissa City_-sarakkeissa.

Käytä OneHotEncoder-enkooderia penguins-aineistoon. Nominaaliset ominaisuudet ovat 'island' ja 'sex'. Sarake 'species' on kohde ja käsitellään erikseen, kun käsitellään kohteen koodausta seuraavassa luvussa.

123456
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') print('island: ', df['island'].unique()) print('sex: ', df['sex'].unique())
copy

OneHotEncoder-muuntimen käyttämiseksi alustetaan enkooderiobjekti ja valitut sarakkeet välitetään metodille .fit_transform(), samalla tavalla kuin muidenkin muuntimien kanssa.

1234567891011
import pandas as pd from sklearn.preprocessing import OneHotEncoder df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') # Assign X, y variables y = df['species'] X = df.drop('species', axis=1) # Initialize an OneHotEncoder object one_hot = OneHotEncoder() # Print transformed 'sex', 'island' columns print(one_hot.fit_transform(X[['sex', 'island']]).toarray())
copy
Note
Huomio

.toarray()-metodi muuntaa OneHotEncoder-muuntimen tuottaman harvan matriisin tiheäksi NumPy-taulukoksi. Tiheät taulukot näyttävät kaikki arvot eksplisiittisesti, mikä helpottaa koodatun datan visualisointia ja käsittelyä DataFrame-rakenteessa. Harvat matriisit tallentavat vain nollasta poikkeavat alkiot, mikä tehostaa muistinkäyttöä. Tämän metodin voi jättää pois, jolloin näet eron tulosteessa.

question mark

OneHotEncoder luo uusia sarakkeita. Onko tämä oikein?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 6
some-alt