Koding av kategoriske variabler
Label encoding, one-hot encoding, ordinal encoding og pd.get_dummies() sammenlignet med sklearn OrdinalEncoder.
Koding av kategoriske variabler er en gratis leksjon i Lær AI med Python på CoddyKit. Dette er leksjon 2 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Lær AI med Python, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Lær AI med Python inneholder totalt 4 leksjoner.
Hvorfor kode kategorier?
De fleste maskinlæringsmodeller trenger TALL, ikke tekstetiketter som "rød" eller "liten". Koding konverterer kategoriske variabler til numerisk form samtidig som betydningen bevares.
Ordinal kontra nominal
Ordinale kategorier har en naturlig rekkefølge (liten < middels < stor). Nominale kategorier har ikke det (rød, grønn, blå). Riktig koding avhenger av hvilken type du har.
Etikettkoding for ordinale kategorier
LabelEncoder tilordner hvert kategori en heltallsverdi. Det passer for ORDINALE data, der rekkefølgen på heltallene har en betydning.
from sklearn.preprocessing import LabelEncoder
sizes = ["small", "large", "medium", "small"]
le = LabelEncoder()
print(le.fit_transform(sizes)) # integers (alphabetical by default)Faren ved nominale kategorier
Det er risikabelt å bruke etikettkoding på NOMINALE data: Modellen kan tolke rød=0, grønn=1, blå=2 som at grønn ligger "mellom" rød og blå, og dermed finne på en falsk rekkefølge. Bruk one-hot-koding i stedet.
One-hot-koding med get_dummies
pd.get_dummies oppretter én binær kolonne per kategori. Nøyaktig én kolonne er 1 per rad, uten noen underforstått rekkefølge, noe som er ideelt for nominale variabler.
import pandas as pd
df = pd.DataFrame({"color": ["red", "green", "blue", "red"]})
print(pd.get_dummies(df, columns=["color"]))Fellen med dummyvariabler
Når k kategorier gir k kolonner, er de perfekt kollineære (summen er alltid 1). Denne dummyvariabelfellen skaper problemer for lineære modeller. Fjern én kolonne for å løse problemet.
drop_first
drop_first=True fjerner én kategori, slik at det blir igjen k-1 kolonner. Den fjernede kategorien blir den implisitte baselinjen (alle verdier er null), og kollineariteten forsvinner.
print(pd.get_dummies(df, columns=["color"], drop_first=True))
# one fewer column; the dropped color is the baselinesklearn OrdinalEncoder
For pipelines er OrdinalEncoder sklearns tilsvarende verktøy for etikettkoding av EGENSKAPER, og det lar deg angi kategoriordenen eksplisitt.
from sklearn.preprocessing import OrdinalEncoder
enc = OrdinalEncoder(categories=[["small", "medium", "large"]])
print(enc.fit_transform([["medium"], ["large"], ["small"]]))sklearn OneHotEncoder
OneHotEncoder er det pipeline-vennlige verktøyet for one-hot-koding. Det lærer kategorier fra treningsdataene og bruker den samme tilordningen på nye data, noe som er avgjørende i produksjon.
from sklearn.preprocessing import OneHotEncoder
ohe = OneHotEncoder(sparse_output=False)
print(ohe.fit_transform([["red"], ["green"], ["blue"]]))Håndtere ukjente kategorier
Testdata kan inneholde kategorier som aldri ble sett under treningen. Angi handle_unknown="ignore", slik at OneHotEncoder returnerer bare nuller i stedet for å krasje.
ohe = OneHotEncoder(handle_unknown="ignore", sparse_output=False)
ohe.fit([["red"], ["green"]])
print(ohe.transform([["blue"]])) # all zeros, no errorKolonner med høy kardinalitet
One-hot-koding av en kolonne med tusenvis av unike verdier fører til en eksplosjon i antallet egenskaper. For høy kardinalitet kan du vurdere målkoding, hashing eller å samle sjeldne kategorier i "annet".
Rask kontroll
Test kunnskapene dine om koding.
Oppsummering
Verktøykasse for koding:
- Ordinale data -> heltallskoding (
LabelEncoder/OrdinalEncoder) - Nominale data -> one-hot-koding (
pd.get_dummies/OneHotEncoder) drop_first=Trueunngår dummyvariabelfellenhandle_unknown="ignore"håndterer ukjente kategorier i testdata- Vær oppmerksom på eksplosjon i kolonner med høy kardinalitet
Lær deg Python med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 53
- Leksjoner
- 225
Ofte stilte spørsmål
Er leksjonen «Koding av kategoriske variabler» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Lær AI med Python, inkludert «Koding av kategoriske variabler», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Lær AI med Python inneholder totalt 4 leksjoner.
Hva lærer jeg i «Koding av kategoriske variabler»?
Label encoding, one-hot encoding, ordinal encoding og pd.get_dummies() sammenlignet med sklearn OrdinalEncoder. Du øver på Lær AI med Python med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Lær AI med Python?
Ingen tidligere erfaring er nødvendig. Lær AI med Python på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «Koding av kategoriske variabler»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Lær AI med Python-leksjonen?
Ja. Alle Lær AI med Python-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Deteksjon og fjerning av uteliggere
- Koding av kategoriske variabler
- Skalering av egenskaper: normalisering og standardisering
- Bygge forhåndsbehandlingspipelines