Kodning af Kategoriske Egenskaber
Klyngeringsalgoritmer som K-means kræver numeriske data. Kategoriske egenskaber skal konverteres til numerisk form ved hjælp af kodning. Du vil lære om ordinal og one-hot encoding.
Ordinal kodning
Ordinal kodning omdanner ordnede kategorier til numeriske værdier, hvor deres rang bevares. For eksempel vil ordinal kodning af kolonnen 'education_level'
transformere dens værdier fra "High School"
, "Bachelor's"
, "Master's"
, 'PhD'
til 0
, 1
, 2
, 3
.
Dette forudsætter en meningsfuld numerisk forskel mellem de kodede værdier, hvilket ikke altid er 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']])
Denne kodning bør kun anvendes på ordinale egenskaber, hvor rækkefølgen af kategorier har betydning.
One-Hot Encoding
One-hot encoding omdanner nominale (uordnede) kategorier til binære kolonner, hvor hver kategori bliver til en ny kolonne. For en egenskab med n
kategorier oprettes der typisk n
kolonner — én kolonne er 1
for den tilsvarende kategori, og de andre er 0
. Dog er kun n-1
kolonner faktisk nødvendige for at repræsentere informationen uden redundans.
For eksempel kan en 'color'
-kolonne med værdierne 'red'
, 'blue'
og 'green'
kodes med kun to kolonner: 'color_red'
og 'color_blue'
. Hvis en række har 0
i begge, betyder det, at farven er 'green'
. Ved at udelade én kolonne undgår man redundans.
Fjernelsen af den redundante kolonne angives via drop='first'
:
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder(drop='first', sparse=False)
encoded = encoder.fit_transform(df[['color']])
Selvom one-hot encoding undgår at pålægge rækkefølge og egner sig til nominelle egenskaber, kan det øge datadimensionaliteten.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Awesome!
Completion rate improved to 2.94
Kodning af Kategoriske Egenskaber
Stryg for at vise menuen
Klyngeringsalgoritmer som K-means kræver numeriske data. Kategoriske egenskaber skal konverteres til numerisk form ved hjælp af kodning. Du vil lære om ordinal og one-hot encoding.
Ordinal kodning
Ordinal kodning omdanner ordnede kategorier til numeriske værdier, hvor deres rang bevares. For eksempel vil ordinal kodning af kolonnen 'education_level'
transformere dens værdier fra "High School"
, "Bachelor's"
, "Master's"
, 'PhD'
til 0
, 1
, 2
, 3
.
Dette forudsætter en meningsfuld numerisk forskel mellem de kodede værdier, hvilket ikke altid er 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']])
Denne kodning bør kun anvendes på ordinale egenskaber, hvor rækkefølgen af kategorier har betydning.
One-Hot Encoding
One-hot encoding omdanner nominale (uordnede) kategorier til binære kolonner, hvor hver kategori bliver til en ny kolonne. For en egenskab med n
kategorier oprettes der typisk n
kolonner — én kolonne er 1
for den tilsvarende kategori, og de andre er 0
. Dog er kun n-1
kolonner faktisk nødvendige for at repræsentere informationen uden redundans.
For eksempel kan en 'color'
-kolonne med værdierne 'red'
, 'blue'
og 'green'
kodes med kun to kolonner: 'color_red'
og 'color_blue'
. Hvis en række har 0
i begge, betyder det, at farven er 'green'
. Ved at udelade én kolonne undgår man redundans.
Fjernelsen af den redundante kolonne angives via drop='first'
:
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder(drop='first', sparse=False)
encoded = encoder.fit_transform(df[['color']])
Selvom one-hot encoding undgår at pålægge rækkefølge og egner sig til nominelle egenskaber, kan det øge datadimensionaliteten.
Tak for dine kommentarer!