One-Hot-kodare
När det gäller nominala värden är hanteringen något mer komplex.
För ordinala data, såsom användarbetyg från 'Terrible' till 'Great', är det lämpligt att koda dem som siffror från 0 till 4 eftersom modellen kan uppfatta den inneboende ordningen.
Däremot, för en egenskap som 'city' med fem distinkta kategorier, skulle kodning som siffror från 0 till 4 felaktigt antyda en ordning. I detta fall är one-hot encoding ett bättre val, eftersom det representerar kategorier utan att antyda någon hierarki.
För att koda nominala data används transformern OneHotEncoder. Den skapar en kolumn för varje unikt värde. För varje rad sätts sedan 1 i kolumnen för radens värde och 0 i övriga kolumner.
Det som ursprungligen var 'NewYork' har nu 1 i kolumnen 'City_NewYork' och 0 i övriga City_-kolumner.
Applicera OneHotEncoder på penguins-datasetet. De nominella egenskaperna är 'island' och 'sex'. Kolumnen 'species' är målet och kommer att hanteras separat vid genomgång av target encoding i nästa 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())
För att använda OneHotEncoder, initiera encoder-objektet och skicka de valda kolumnerna till .fit_transform(), på samma sätt som med andra transformatorer.
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() konverterar den glesa matrisen som returneras av OneHotEncoder till en tät NumPy-array. Täta arrayer visar alla värden explicit, vilket underlättar visualisering och hantering av den kodade datan i en DataFrame. Glesa matriser lagrar endast icke-noll element, vilket optimerar minnesanvändningen. Du kan utelämna denna metod för att se skillnaden i utdata.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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-kodare
Svep för att visa menyn
När det gäller nominala värden är hanteringen något mer komplex.
För ordinala data, såsom användarbetyg från 'Terrible' till 'Great', är det lämpligt att koda dem som siffror från 0 till 4 eftersom modellen kan uppfatta den inneboende ordningen.
Däremot, för en egenskap som 'city' med fem distinkta kategorier, skulle kodning som siffror från 0 till 4 felaktigt antyda en ordning. I detta fall är one-hot encoding ett bättre val, eftersom det representerar kategorier utan att antyda någon hierarki.
För att koda nominala data används transformern OneHotEncoder. Den skapar en kolumn för varje unikt värde. För varje rad sätts sedan 1 i kolumnen för radens värde och 0 i övriga kolumner.
Det som ursprungligen var 'NewYork' har nu 1 i kolumnen 'City_NewYork' och 0 i övriga City_-kolumner.
Applicera OneHotEncoder på penguins-datasetet. De nominella egenskaperna är 'island' och 'sex'. Kolumnen 'species' är målet och kommer att hanteras separat vid genomgång av target encoding i nästa 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())
För att använda OneHotEncoder, initiera encoder-objektet och skicka de valda kolumnerna till .fit_transform(), på samma sätt som med andra transformatorer.
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() konverterar den glesa matrisen som returneras av OneHotEncoder till en tät NumPy-array. Täta arrayer visar alla värden explicit, vilket underlättar visualisering och hantering av den kodade datan i en DataFrame. Glesa matriser lagrar endast icke-noll element, vilket optimerar minnesanvändningen. Du kan utelämna denna metod för att se skillnaden i utdata.
Tack för dina kommentarer!