Codering van Categorische Kenmerken
Clustering-algoritmen zoals K-means vereisen numerieke data. Categorische kenmerken moeten worden omgezet naar numerieke vorm via codering. U leert over ordinale en one-hot encoding.
Ordinale codering
Ordinale codering zet geordende categorieën om in numerieke waarden, waarbij hun rangorde behouden blijft. Bijvoorbeeld, ordinale codering van de kolom 'education_level' transformeert de waarden van "High School", "Bachelor's", "Master's", 'PhD' naar 0, 1, 2, 3.
Dit veronderstelt een betekenisvol numeriek verschil tussen de gecodeerde waarden, wat niet altijd accuraat hoeft te zijn.
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']])
Deze codering dient alleen te worden gebruikt voor ordinale kenmerken waarbij de volgorde van categorieën van belang is.
One-hot-encoding
One-hot-encoding zet nominale (ongeschikte) categorieën om in binaire kolommen, waarbij elke categorie een nieuwe kolom wordt. Voor een kenmerk met n categorieën worden doorgaans n kolommen aangemaakt — één kolom is 1 voor de betreffende categorie en de overige zijn 0. Echter, slechts n-1 kolommen zijn daadwerkelijk nodig om de informatie zonder redundantie weer te geven.
Een voorbeeld: een 'color'-kolom met waarden 'red', 'blue' en 'green' kan worden gecodeerd met slechts twee kolommen: 'color_red' en 'color_blue'. Als een rij 0 heeft in beide kolommen, betekent dit dat de kleur 'green' is. Door één kolom te laten vervallen, wordt redundantie voorkomen.
Het verwijderen van de redundante kolom wordt gespecificeerd via drop='first':
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder(drop='first', sparse=False)
encoded = encoder.fit_transform(df[['color']])
Hoewel one-hot-encoding geen volgorde oplegt en geschikt is voor nominale kenmerken, kan het de datadimensionaliteit vergroten.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
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
Codering van Categorische Kenmerken
Veeg om het menu te tonen
Clustering-algoritmen zoals K-means vereisen numerieke data. Categorische kenmerken moeten worden omgezet naar numerieke vorm via codering. U leert over ordinale en one-hot encoding.
Ordinale codering
Ordinale codering zet geordende categorieën om in numerieke waarden, waarbij hun rangorde behouden blijft. Bijvoorbeeld, ordinale codering van de kolom 'education_level' transformeert de waarden van "High School", "Bachelor's", "Master's", 'PhD' naar 0, 1, 2, 3.
Dit veronderstelt een betekenisvol numeriek verschil tussen de gecodeerde waarden, wat niet altijd accuraat hoeft te zijn.
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']])
Deze codering dient alleen te worden gebruikt voor ordinale kenmerken waarbij de volgorde van categorieën van belang is.
One-hot-encoding
One-hot-encoding zet nominale (ongeschikte) categorieën om in binaire kolommen, waarbij elke categorie een nieuwe kolom wordt. Voor een kenmerk met n categorieën worden doorgaans n kolommen aangemaakt — één kolom is 1 voor de betreffende categorie en de overige zijn 0. Echter, slechts n-1 kolommen zijn daadwerkelijk nodig om de informatie zonder redundantie weer te geven.
Een voorbeeld: een 'color'-kolom met waarden 'red', 'blue' en 'green' kan worden gecodeerd met slechts twee kolommen: 'color_red' en 'color_blue'. Als een rij 0 heeft in beide kolommen, betekent dit dat de kleur 'green' is. Door één kolom te laten vervallen, wordt redundantie voorkomen.
Het verwijderen van de redundante kolom wordt gespecificeerd via drop='first':
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder(drop='first', sparse=False)
encoded = encoder.fit_transform(df[['color']])
Hoewel one-hot-encoding geen volgorde oplegt en geschikt is voor nominale kenmerken, kan het de datadimensionaliteit vergroten.
Bedankt voor je feedback!