Kodning av Kategoriska Variabler
Klustringsalgoritmer som K-means kräver numerisk data. Kategoriska variabler måste omvandlas till numerisk form genom kodning. Du kommer att lära dig om ordinal och one-hot encoding.
Ordinal kodning
Ordinal kodning omvandlar ordnade kategorier till numeriska värden och bevarar deras rangordning. Till exempel kommer ordinal kodning av kolumnen 'education_level'
att omvandla dess värden från "High School"
, "Bachelor's"
, "Master's"
, 'PhD'
till 0
, 1
, 2
, 3
.
Detta förutsätter en meningsfull numerisk skillnad mellan de kodade värdena, vilket inte alltid är korrekt.
from sklearn.preprocessing import OrdinalEncoder
education_levels = [['High School',
"Bachelor's",
"Master's",
"PhD"]]
encoder = OrdinalEncoder(categories=education_levels)
df[['education_encoded']] = encoder.fit_transform(df[['education_level']])
Denna kodning bör endast användas för ordinala variabler där kategoriernas ordning är viktig.
One-hot-kodning
One-hot-kodning omvandlar nominala (oordnade) kategorier till binära kolumner, där varje kategori blir en ny kolumn. För en variabel med n
kategorier skapas vanligtvis n
kolumner — en kolumn är 1
för motsvarande kategori och de andra är 0
. Dock behövs endast n-1
kolumner för att representera informationen utan redundans.
Till exempel kan en 'color'
-kolumn med värdena 'red'
, 'blue'
och 'green'
kodas med endast två kolumner: 'color_red'
och 'color_blue'
. Om en rad har 0
i båda, innebär det att färgen är 'green'
. Genom att ta bort en kolumn undviks redundans.
Borttagning av den redundanta kolumnen anges via drop='first'
:
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder(drop='first', sparse=False)
encoded = encoder.fit_transform(df[['color']])
Även om one-hot-kodning undviker att införa ordning och passar nominala variabler, kan det öka datadimensionaliteten.
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 the difference between ordinal and one-hot encoding in more detail?
When should I use ordinal encoding versus one-hot encoding?
Can you give more examples of categorical features and how to encode them?
Awesome!
Completion rate improved to 2.94
Kodning av Kategoriska Variabler
Svep för att visa menyn
Klustringsalgoritmer som K-means kräver numerisk data. Kategoriska variabler måste omvandlas till numerisk form genom kodning. Du kommer att lära dig om ordinal och one-hot encoding.
Ordinal kodning
Ordinal kodning omvandlar ordnade kategorier till numeriska värden och bevarar deras rangordning. Till exempel kommer ordinal kodning av kolumnen 'education_level'
att omvandla dess värden från "High School"
, "Bachelor's"
, "Master's"
, 'PhD'
till 0
, 1
, 2
, 3
.
Detta förutsätter en meningsfull numerisk skillnad mellan de kodade värdena, vilket inte alltid är korrekt.
from sklearn.preprocessing import OrdinalEncoder
education_levels = [['High School',
"Bachelor's",
"Master's",
"PhD"]]
encoder = OrdinalEncoder(categories=education_levels)
df[['education_encoded']] = encoder.fit_transform(df[['education_level']])
Denna kodning bör endast användas för ordinala variabler där kategoriernas ordning är viktig.
One-hot-kodning
One-hot-kodning omvandlar nominala (oordnade) kategorier till binära kolumner, där varje kategori blir en ny kolumn. För en variabel med n
kategorier skapas vanligtvis n
kolumner — en kolumn är 1
för motsvarande kategori och de andra är 0
. Dock behövs endast n-1
kolumner för att representera informationen utan redundans.
Till exempel kan en 'color'
-kolumn med värdena 'red'
, 'blue'
och 'green'
kodas med endast två kolumner: 'color_red'
och 'color_blue'
. Om en rad har 0
i båda, innebär det att färgen är 'green'
. Genom att ta bort en kolumn undviks redundans.
Borttagning av den redundanta kolumnen anges via drop='first'
:
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder(drop='first', sparse=False)
encoded = encoder.fit_transform(df[['color']])
Även om one-hot-kodning undviker att införa ordning och passar nominala variabler, kan det öka datadimensionaliteten.
Tack för dina kommentarer!