One-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 OneHotEncoder
på penguins 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.
123456import 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.
1234567891011import 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())
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.
Tak for dine kommentarer!
Spørg AI
Spørg AI
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
One-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 OneHotEncoder
på penguins 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.
123456import 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.
1234567891011import 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())
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.
Tak for dine kommentarer!