Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära One-Hot Kodare | Sektion
Practice
Projects
Quizzes & Challenges
Frågesporter
Challenges
/
Grunder i Maskininlärning

bookOne-Hot Kodare

När det gäller nominala värden är hanteringen något mer komplex.

För ordinal 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 fånga den inneboende ordningen.

Däremot, för en egenskap som 'city' med fem distinkta kategorier, skulle en 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 nominal data används transformern OneHotEncoder. Den skapar en kolumn för varje unikt värde. För varje rad sätts 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 OneHotEncoderpenguins-datasetet. De nominella attributen är 'island' och 'sex'. Kolumnen 'species' är målvariabeln och kommer att behandlas separat vid genomgången av target encoding i nästa 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

För att använda OneHotEncoder, initiera encoder-objektet och ange de valda kolumnerna till .fit_transform(), på samma sätt som med andra transformatorer.

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
Notering

Metoden .toarray() konverterar gles matris-utdata från 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.

question mark

OneHotEncoder skapar nya kolumner. Är detta korrekt?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 11

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

bookOne-Hot Kodare

Svep för att visa menyn

När det gäller nominala värden är hanteringen något mer komplex.

För ordinal 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 fånga den inneboende ordningen.

Däremot, för en egenskap som 'city' med fem distinkta kategorier, skulle en 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 nominal data används transformern OneHotEncoder. Den skapar en kolumn för varje unikt värde. För varje rad sätts 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 OneHotEncoderpenguins-datasetet. De nominella attributen är 'island' och 'sex'. Kolumnen 'species' är målvariabeln och kommer att behandlas separat vid genomgången av target encoding i nästa 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

För att använda OneHotEncoder, initiera encoder-objektet och ange de valda kolumnerna till .fit_transform(), på samma sätt som med andra transformatorer.

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
Notering

Metoden .toarray() konverterar gles matris-utdata från 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.

question mark

OneHotEncoder skapar nya kolumner. Är detta korrekt?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 11
some-alt