Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Kategorisk Funksjonskoding | Kjernebegreper
Klyngeanalyse

bookKategorisk Funksjonskoding

Klyngeringsalgoritmer som K-means krever numeriske data. Kategoriske egenskaper må konverteres til numerisk form ved hjelp av koding. Du vil lære om ordinal og one-hot-koding.

Ordinal koding

Ordinal koding konverterer ordnede kategorier til numeriske verdier, og bevarer deres rekkefølge. For eksempel vil ordinal koding av kolonnen 'education_level' transformere verdiene fra "High School", "Bachelor's", "Master's", 'PhD' til 0, 1, 2, 3.

Dette forutsetter en meningsfull numerisk forskjell mellom kodede verdier, noe som ikke alltid er nøyaktig.

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
Merk

Slik koding bør kun brukes for ordinale egenskaper der rekkefølgen på kategoriene er viktig.

One-hot-koding

One-hot-koding konverterer nominale (uordnede) kategorier til binære kolonner, der hver kategori blir en ny kolonne. For en egenskap med n kategorier, opprettes det vanligvis n kolonner — én kolonne er 1 for den tilsvarende kategorien, og de andre er 0. Imidlertid er det kun nødvendig med n-1 kolonner for å representere informasjonen uten redundans.

For eksempel kan en 'color'-kolonne med verdiene 'red', 'blue' og 'green' kodes med kun to kolonner: 'color_red' og 'color_blue'. Hvis en rad har 0 i begge, innebærer det at fargen er 'green'. Ved å fjerne én kolonne unngår man redundans.

Fjerning av den redundante kolonnen spesifiseres via drop='first':

from sklearn.preprocessing import OneHotEncoder 

encoder = OneHotEncoder(drop='first', sparse=False) 

encoded = encoder.fit_transform(df[['color']]) 
Note
Merk

Selv om one-hot-koding unngår å påtvinge rekkefølge og passer for nominale egenskaper, kan det øke datadimensjonaliteten.

question mark

Hvilken kodingsmetode passer best for en kategorisk egenskap som 'country' med verdier som "USA", "Canada" og "Germany", der det ikke finnes noen naturlig rekkefølge?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 2

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Awesome!

Completion rate improved to 2.94

bookKategorisk Funksjonskoding

Sveip for å vise menyen

Klyngeringsalgoritmer som K-means krever numeriske data. Kategoriske egenskaper må konverteres til numerisk form ved hjelp av koding. Du vil lære om ordinal og one-hot-koding.

Ordinal koding

Ordinal koding konverterer ordnede kategorier til numeriske verdier, og bevarer deres rekkefølge. For eksempel vil ordinal koding av kolonnen 'education_level' transformere verdiene fra "High School", "Bachelor's", "Master's", 'PhD' til 0, 1, 2, 3.

Dette forutsetter en meningsfull numerisk forskjell mellom kodede verdier, noe som ikke alltid er nøyaktig.

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
Merk

Slik koding bør kun brukes for ordinale egenskaper der rekkefølgen på kategoriene er viktig.

One-hot-koding

One-hot-koding konverterer nominale (uordnede) kategorier til binære kolonner, der hver kategori blir en ny kolonne. For en egenskap med n kategorier, opprettes det vanligvis n kolonner — én kolonne er 1 for den tilsvarende kategorien, og de andre er 0. Imidlertid er det kun nødvendig med n-1 kolonner for å representere informasjonen uten redundans.

For eksempel kan en 'color'-kolonne med verdiene 'red', 'blue' og 'green' kodes med kun to kolonner: 'color_red' og 'color_blue'. Hvis en rad har 0 i begge, innebærer det at fargen er 'green'. Ved å fjerne én kolonne unngår man redundans.

Fjerning av den redundante kolonnen spesifiseres via drop='first':

from sklearn.preprocessing import OneHotEncoder 

encoder = OneHotEncoder(drop='first', sparse=False) 

encoded = encoder.fit_transform(df[['color']]) 
Note
Merk

Selv om one-hot-koding unngår å påtvinge rekkefølge og passer for nominale egenskaper, kan det øke datadimensjonaliteten.

question mark

Hvilken kodingsmetode passer best for en kategorisk egenskap som 'country' med verdier som "USA", "Canada" og "Germany", der det ikke finnes noen naturlig rekkefølge?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 2
some-alt