One-Hot Encoder
Når det gælder nominale værdier, er håndteringen lidt mere kompleks.
For ordinale 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 iboende 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 lettere at visualisere og manipulere de kodede data i en DataFrame. Sparse matricer gemmer kun ikke-nul-elementer, hvilket optimerer hukommelsesforbruget. Denne metode kan udelades 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
Can you explain what the output of the OneHotEncoder means?
How do I interpret the transformed data for the 'sex' and 'island' columns?
What should I do next after applying OneHotEncoder to these features?
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 lidt mere kompleks.
For ordinale 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 iboende 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 lettere at visualisere og manipulere de kodede data i en DataFrame. Sparse matricer gemmer kun ikke-nul-elementer, hvilket optimerer hukommelsesforbruget. Denne metode kan udelades for at se forskellen i output.
Tak for dine kommentarer!