Kodierung Kategorialer Merkmale
Clustering-Algorithmen wie K-means benötigen numerische Daten. Kategorische Merkmale müssen durch Kodierung in numerische Form umgewandelt werden. Sie lernen ordinale und One-Hot-Kodierung kennen.
Ordinale Kodierung
Ordinale Kodierung wandelt geordnete Kategorien in numerische Werte um und erhält deren Rangfolge. Zum Beispiel transformiert die ordinale Kodierung der Spalte 'education_level'
deren Werte von "High School"
, "Bachelor's"
, "Master's"
, 'PhD'
zu 0
, 1
, 2
, 3
.
Dies setzt einen bedeutungsvollen numerischen Unterschied zwischen den kodierten Werten voraus, was nicht immer zutreffend ist.
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']])
Solche Kodierung sollte nur für ordinale Merkmale verwendet werden, bei denen die Reihenfolge der Kategorien relevant ist.
One-Hot-Encoding
One-Hot-Encoding wandelt nominale (ungeordnete) Kategorien in binäre Spalten um, wobei jede Kategorie zu einer neuen Spalte wird. Für ein Merkmal mit n
Kategorien entstehen typischerweise n
Spalten — eine Spalte ist für die entsprechende Kategorie 1
, die anderen sind 0
. Tatsächlich werden jedoch nur n-1
Spalten benötigt, um die Information ohne Redundanz darzustellen.
Beispielsweise kann eine 'color'
-Spalte mit den Werten 'red'
, 'blue'
und 'green'
mit nur zwei Spalten kodiert werden: 'color_red'
und 'color_blue'
. Wenn eine Zeile in beiden Spalten 0
hat, bedeutet dies, dass die Farbe 'green'
ist. Durch das Entfernen einer Spalte wird Redundanz vermieden.
Das Entfernen der redundanten Spalte wird über drop='first'
festgelegt:
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder(drop='first', sparse=False)
encoded = encoder.fit_transform(df[['color']])
Obwohl One-Hot-Encoding keine Ordnung vorgibt und sich für nominale Merkmale eignet, kann es die Daten-Dimensionalität erhöhen.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
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
Kodierung Kategorialer Merkmale
Swipe um das Menü anzuzeigen
Clustering-Algorithmen wie K-means benötigen numerische Daten. Kategorische Merkmale müssen durch Kodierung in numerische Form umgewandelt werden. Sie lernen ordinale und One-Hot-Kodierung kennen.
Ordinale Kodierung
Ordinale Kodierung wandelt geordnete Kategorien in numerische Werte um und erhält deren Rangfolge. Zum Beispiel transformiert die ordinale Kodierung der Spalte 'education_level'
deren Werte von "High School"
, "Bachelor's"
, "Master's"
, 'PhD'
zu 0
, 1
, 2
, 3
.
Dies setzt einen bedeutungsvollen numerischen Unterschied zwischen den kodierten Werten voraus, was nicht immer zutreffend ist.
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']])
Solche Kodierung sollte nur für ordinale Merkmale verwendet werden, bei denen die Reihenfolge der Kategorien relevant ist.
One-Hot-Encoding
One-Hot-Encoding wandelt nominale (ungeordnete) Kategorien in binäre Spalten um, wobei jede Kategorie zu einer neuen Spalte wird. Für ein Merkmal mit n
Kategorien entstehen typischerweise n
Spalten — eine Spalte ist für die entsprechende Kategorie 1
, die anderen sind 0
. Tatsächlich werden jedoch nur n-1
Spalten benötigt, um die Information ohne Redundanz darzustellen.
Beispielsweise kann eine 'color'
-Spalte mit den Werten 'red'
, 'blue'
und 'green'
mit nur zwei Spalten kodiert werden: 'color_red'
und 'color_blue'
. Wenn eine Zeile in beiden Spalten 0
hat, bedeutet dies, dass die Farbe 'green'
ist. Durch das Entfernen einer Spalte wird Redundanz vermieden.
Das Entfernen der redundanten Spalte wird über drop='first'
festgelegt:
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder(drop='first', sparse=False)
encoded = encoder.fit_transform(df[['color']])
Obwohl One-Hot-Encoding keine Ordnung vorgibt und sich für nominale Merkmale eignet, kann es die Daten-Dimensionalität erhöhen.
Danke für Ihr Feedback!