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
Introduktion til Maskinlæring med Python

One-hot-encoder

Stryg for at vise menuen

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

Typer af kategoriske data

For ordinale data, såsom brugerbedømmelser fra 'Forfærdelig' til 'Fremragende', er det passende at kode dem som tal fra 0 til 4, fordi modellen kan opfange den indbyggede rækkefølge.

Omvendt 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.

Til kodning af 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.

OneHotEncoder
One-hot encoding

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())

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())
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 lettere 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?

Vælg det korrekte svar

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

Sektion 2. Kapitel 6
some-alt