Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Kodning af Kategoriske Egenskaber | Kernekoncepter
Klyngeanalyse

bookKodning 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']]) 
Note
Bemærk

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']]) 
Note
Bemærk

Selvom one-hot encoding undgår at pålægge rækkefølge og egner sig til nominelle egenskaber, kan det øge datadimensionaliteten.

question mark

Hvilken kodningsmetode er bedst egnet til en kategorisk egenskab som 'country' med værdier som "USA", "Canada" og "Germany", hvor der ikke er nogen naturlig rækkefølge?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 2

Spørg AI

expand

Spørg AI

ChatGPT

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

bookKodning 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']]) 
Note
Bemærk

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']]) 
Note
Bemærk

Selvom one-hot encoding undgår at pålægge rækkefølge og egner sig til nominelle egenskaber, kan det øge datadimensionaliteten.

question mark

Hvilken kodningsmetode er bedst egnet til en kategorisk egenskab som 'country' med værdier som "USA", "Canada" og "Germany", hvor der ikke er nogen naturlig rækkefølge?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 2
some-alt