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
Johdatus koneoppimiseen Pythonilla

One-hot-koodaus

Pyyhkäise näyttääksesi valikon

Nominaalisten arvojen käsittely on hieman monimutkaisempaa.

Kategoristen tietojen tyypit

Ordinaalisille tiedoille, kuten käyttäjäarvioille välillä 'Terrible'–'Great', on sopivaa koodata ne numeroiksi 0–4, koska malli pystyy hyödyntämään järjestyksen.

Sen sijaan ominaisuudelle kuten 'city', jossa on viisi erillistä kategoriaa, koodaus numeroilla 0–4 antaisi virheellisesti ymmärtää järjestyksen olemassaolon. Tässä tapauksessa one-hot encoding on parempi vaihtoehto, sillä se esittää kategoriat 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.

OneHotEncoder
One-hot-koodaus

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

Sovella OneHotEncoder-enkooderia penguins-aineistoon. Nominaaliset ominaisuudet ovat 'island' ja 'sex'. Sarake 'species' on kohde ja käsitellään erikseen, kun käsitellään kohde-enkoodausta 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())

OneHotEncoder-kooderin 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())
Note
Huomio

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

question mark

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

Valitse oikea vastaus

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

Osio 2. Luku 6
some-alt