Kodning af kategoriske variabler
Label encoding, one-hot encoding, ordinal encoding og pd.get_dummies() sammenlignet med sklearn OrdinalEncoder.
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 baselinesklearn OrdinalEncoder
Til behandlingskæder er OrdinalEncoder sklearn-æ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 errorKolonner 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=Trueundgår dummyvariabelfældenhandle_unknown="ignore"til ukendte testkategorier- Hold øje med eksplosiv vækst i kolonner med høj kardinalitet
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
- Detektion og fjernelse af outliers
- Kodning af kategoriske variabler
- Feature-skalering: normalisering og standardisering
- Opbygning af preprocessing-pipelines