Lær AI med Python · Lektion

Kodning af kategoriske variabler

Label encoding, one-hot encoding, ordinal encoding og pd.get_dummies() sammenlignet med sklearn OrdinalEncoder.

Lektion 2 af 413 trin

Kodning af kategoriske variabler er en gratis Lær AI med Python-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Lær AI med Python, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Lær AI med Python-kurset indeholder 4 lektioner i alt.

Hvorfor kode kategorier

De fleste maskinlæringsmodeller har brug for TAL, ikke tekstetiketter som "rød" eller "lille". Kodning omdanner kategoriske variabler til numerisk form, samtidig med at deres betydning bevares.

Ordinale kontra nominelle kategorier

Ordinale kategorier har en naturlig rækkefølge (lille < mellem < stor). Nominale kategorier har ikke en rækkefølge (rød, grøn, blå). Den rigtige kodning afhænger af, hvilken type du har.

Etiketkodning til ordinale kategorier

LabelEncoder knytter hvert kategori til et heltal. Det er velegnet til ORDINALE data, hvor heltallenes rækkefølge har betydning.

from sklearn.preprocessing import LabelEncoder
sizes = ["small", "large", "medium", "small"]
le = LabelEncoder()
print(le.fit_transform(sizes))   # integers (alphabetical by default)

Faren ved nominelle kategorier

Det er risikabelt at bruge etiketkodning på NOMINALE data: Modellen kan fortolke rød=0, grøn=1, blå=2 som om grøn ligger "mellem" rød og blå og dermed opfinde en falsk rækkefølge. Brug i stedet one-hot-kodning.

One-hot-kodning med get_dummies

pd.get_dummies opretter én binær kolonne pr. kategori. Præcis én kolonne er 1 i hver række, uden nogen underforstået rækkefølge, hvilket er ideelt til nominelle variabler.

import pandas as pd
df = pd.DataFrame({"color": ["red", "green", "blue", "red"]})
print(pd.get_dummies(df, columns=["color"]))

Fælden med dummyvariabler

Når k kategorier giver k kolonner, er kolonnerne perfekt kollineære (de summerer altid til 1). Denne dummyvariabelfælde ødelægger lineære modeller. Fjern én kolonne for at løse problemet.

drop_first

drop_first=True fjerner én kategori, så der er k-1 kolonner tilbage. Den fjernede kategori bliver den implicitte basis (alle værdier er nul), hvilket eliminerer kollineariteten.

print(pd.get_dummies(df, columns=["color"], drop_first=True))
# one fewer column; the dropped color is the baseline

sklearn OrdinalEncoder

Til behandlingskæder er OrdinalEncoder sklear­n-ækvivalenten til etiketkodning af EGENSKABER, og den lader dig angive kategoriernes rækkefølge eksplicit.

from sklearn.preprocessing import OrdinalEncoder
enc = OrdinalEncoder(categories=[["small", "medium", "large"]])
print(enc.fit_transform([["medium"], ["large"], ["small"]]))

sklearn OneHotEncoder

OneHotEncoder er det one-hot-værktøj, der passer til behandlingskæder. Det lærer kategorierne fra træningsdataene og anvender den samme mapping på nye data, hvilket er afgørende i produktion.

from sklearn.preprocessing import OneHotEncoder
ohe = OneHotEncoder(sparse_output=False)
print(ohe.fit_transform([["red"], ["green"], ["blue"]]))

Håndtering af ukendte kategorier

Testdata kan indeholde kategorier, der aldrig blev set under træningen. Angiv handle_unknown="ignore", så OneHotEncoder giver alle nuller i stedet for at gå ned.

ohe = OneHotEncoder(handle_unknown="ignore", sparse_output=False)
ohe.fit([["red"], ["green"]])
print(ohe.transform([["blue"]]))   # all zeros, no error

Kolonner med høj kardinalitet

One-hot-kodning af en kolonne med tusindvis af unikke værdier får antallet af egenskaber til at eksplodere. Ved høj kardinalitet kan du overveje målkodning, hashing eller at samle sjældne kategorier i "andet".

Hurtigt tjek

Test din viden om kodning.

Opsummering

Værktøjer til kodning:

  • Ordinale data -> heltalskodning (LabelEncoder / OrdinalEncoder)
  • Nominale data -> one-hot (pd.get_dummies / OneHotEncoder)
  • drop_first=True undgår dummyvariabelfælden
  • handle_unknown="ignore" til ukendte testkategorier
  • Hold øje med eksplosiv vækst i kolonner med høj kardinalitet
Gratis at komme i gang

Lær Python med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
53
Lektioner
225

Ofte stillede spørgsmål

Er lektionen “Kodning af kategoriske variabler” gratis?

Ja — alle 3 lektioner i læringssporet Lær AI med Python, inklusive “Kodning af kategoriske variabler”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Lær AI med Python-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Kodning af kategoriske variabler”?

Label encoding, one-hot encoding, ordinal encoding og pd.get_dummies() sammenlignet med sklearn OrdinalEncoder. Du øver dig i Lær AI med Python med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Lær AI med Python?

Der kræves ingen tidligere erfaring. Lær AI med Python på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “Kodning af kategoriske variabler”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Lær AI med Python-lektion?

Ja. Alle Lær AI med Python-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Detektion og fjernelse af outliers
  2. Kodning af kategoriske variabler
  3. Feature-skalering: normalisering og standardisering
  4. Opbygning af preprocessing-pipelines
← Tilbage til Lær AI med Python