Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære One-Hot Encoder | Forbehandling af Data med Scikit-learn
ML Introduktion med Scikit-learn

bookOne-Hot Encoder

Når det gælder nominale værdier, er håndteringen en smule mere kompleks.

For ordinære data, såsom brugerbedømmelser fra 'Terrible' til 'Great', er det passende at kode dem som tal fra 0 til 4, da modellen kan opfange den indbyggede rækkefølge.

I modsætning hertil vil kodning af en funktion som 'city' med fem forskellige kategorier som tal fra 0 til 4 fejlagtigt antyde en rækkefølge. I dette tilfælde er one-hot encoding et bedre valg, da det repræsenterer kategorier uden at antyde et hierarki.

For at kode nominale data anvendes OneHotEncoder-transformeren. Den opretter en kolonne for hver unik værdi. For hver række sættes 1 i kolonnen for denne rækkes værdi og 0 i de øvrige kolonner.

Det, der oprindeligt var 'NewYork', har nu 1 i kolonnen 'City_NewYork' og 0 i de andre City_ kolonner.

Anvend OneHotEncoderpenguins datasættet. De nominelle egenskaber er 'island' og 'sex'. Kolonnen 'species' er målet og vil blive behandlet separat, når target encoding diskuteres i næste kapitel.

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

For at anvende OneHotEncoder, initialiseres encoder-objektet og de valgte kolonner sendes til .fit_transform(), på samme måde som med andre transformere.

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
Bemærk

Metoden .toarray() konverterer sparse matrix-outputtet fra OneHotEncoder til et tæt NumPy-array. Tætte arrays viser alle værdier eksplicit, hvilket gør det nemmere at visualisere og manipulere de kodede data i en DataFrame. Sparse matricer gemmer kun ikke-nul-elementer, hvilket optimerer hukommelsesforbruget. Du kan udelade denne metode for at se forskellen i output.

question mark

OneHotEncoder opretter nye kolonner. Er dette korrekt?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 6

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Awesome!

Completion rate improved to 3.13

bookOne-Hot Encoder

Stryg for at vise menuen

Når det gælder nominale værdier, er håndteringen en smule mere kompleks.

For ordinære data, såsom brugerbedømmelser fra 'Terrible' til 'Great', er det passende at kode dem som tal fra 0 til 4, da modellen kan opfange den indbyggede rækkefølge.

I modsætning hertil vil kodning af en funktion som 'city' med fem forskellige kategorier som tal fra 0 til 4 fejlagtigt antyde en rækkefølge. I dette tilfælde er one-hot encoding et bedre valg, da det repræsenterer kategorier uden at antyde et hierarki.

For at kode nominale data anvendes OneHotEncoder-transformeren. Den opretter en kolonne for hver unik værdi. For hver række sættes 1 i kolonnen for denne rækkes værdi og 0 i de øvrige kolonner.

Det, der oprindeligt var 'NewYork', har nu 1 i kolonnen 'City_NewYork' og 0 i de andre City_ kolonner.

Anvend OneHotEncoderpenguins datasættet. De nominelle egenskaber er 'island' og 'sex'. Kolonnen 'species' er målet og vil blive behandlet separat, når target encoding diskuteres i næste kapitel.

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

For at anvende OneHotEncoder, initialiseres encoder-objektet og de valgte kolonner sendes til .fit_transform(), på samme måde som med andre transformere.

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
Bemærk

Metoden .toarray() konverterer sparse matrix-outputtet fra OneHotEncoder til et tæt NumPy-array. Tætte arrays viser alle værdier eksplicit, hvilket gør det nemmere at visualisere og manipulere de kodede data i en DataFrame. Sparse matricer gemmer kun ikke-nul-elementer, hvilket optimerer hukommelsesforbruget. Du kan udelade denne metode for at se forskellen i output.

question mark

OneHotEncoder opretter nye kolonner. Er dette korrekt?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 6
some-alt