Lär Er AI med Python · Lektion

Koda kategoriska variabler

Etikettkodning, one-hot-kodning, ordinal kodning och pd.get_dummies() jämfört med sklearn OrdinalEncoder.

Lektion 2 av 413 steg

Koda kategoriska variabler är en gratis lektion i Lär Er AI med Python på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Lär Er AI med Python, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Lär Er AI med Python innehåller totalt 4 lektioner.

Varför koda kategorier?

De flesta maskininlärningsmodeller behöver SIFFROR, inte textetiketter som "röd" eller "liten". Kodning omvandlar kategoriska variabler till numerisk form samtidigt som deras innebörd bevaras.

Ordinal kontra nominal

Ordinala kategorier har en naturlig ordning (liten < medelstor < stor). Nominala kategorier har ingen sådan ordning (röd, grön, blå). Rätt kodning beror på vilken typ du har.

Etikettkodning för ordinaldata

LabelEncoder mappar varje kategori till ett heltal. Det passar för ORDINAL data där heltalens ordning har en betydelse.

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

Risken med nominaldata

Det är riskabelt att använda etikettkodning på NOMINAL data: modellen kan tolka röd=0, grön=1, blå=2 som att grön ligger "mellan" röd och blå, och därmed hitta på en falsk ordning. Använd one-hot-kodning i stället.

One-hot-kodning med get_dummies

pd.get_dummies skapar en binär kolumn för varje kategori. Exakt en kolumn har värdet 1 per rad, utan någon underförstådd ordning, vilket är idealiskt för nominalvariabler.

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

Dummyvariabelfällan

När k kategorier ger k kolumner är de perfekt kolinjära (de summerar alltid till 1). Den här dummyvariabelfällan förstör linjära modeller. Ta bort en kolumn för att lösa problemet.

drop_first

drop_first=True tar bort en kategori, så att k-1 kolumner återstår. Den borttagna kategorin blir den implicita baslinjen (en rad med enbart nollor), vilket eliminerar kollineariteten.

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

sklearn OrdinalEncoder

För pipelines är OrdinalEncoder motsvarigheten i sklearn till etikettkodning av FEATURES och låter dig ange kategoriordningen uttryckligen.

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

sklearn OneHotEncoder

OneHotEncoder är det pipelinevänliga verktyget för one-hot-kodning. Det lär sig kategorier från träningsdata och använder samma mappning på nya data, vilket är avgörande i produktion.

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

Hantera okända kategorier

Testdata kan innehålla kategorier som aldrig förekom i träningen. Ange handle_unknown="ignore" så att OneHotEncoder returnerar enbart nollor i stället för att krascha.

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

Kolumner med hög kardinalitet

One-hot-kodning av en kolumn med tusentals unika värden får antalet features att explodera. För hög kardinalitet kan du överväga target encoding, hashing eller att gruppera sällsynta kategorier i "övrigt".

Snabbtest

Testa dina kunskaper om kodning.

Repetition

Verktygslåda för kodning:

  • Ordinaldata -> heltalskodning (LabelEncoder / OrdinalEncoder)
  • Nominaldata -> one-hot-kodning (pd.get_dummies / OneHotEncoder)
  • drop_first=True undviker dummyvariabelfällan
  • handle_unknown="ignore" för okända testkategorier
  • Var uppmärksam på att kolumner med hög kardinalitet kan explodera i storlek
Gratis att börja

Lär dig Python med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
53
Lektioner
225

Vanliga frågor

Är lektionen ”Koda kategoriska variabler” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Lär Er AI med Python, inklusive ”Koda kategoriska variabler”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Lär Er AI med Python innehåller totalt 4 lektioner.

Vad lär jag mig i ”Koda kategoriska variabler”?

Etikettkodning, one-hot-kodning, ordinal kodning och pd.get_dummies() jämfört med sklearn OrdinalEncoder. Ni övar på Lär Er AI med Python med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Lär Er AI med Python?

Du behöver inga förkunskaper. Utbildningen i Lär Er AI med Python på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Koda kategoriska variabler”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Lär Er AI med Python-lektionen?

Ja. Varje Lär Er AI med Python-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Detektera och ta bort avvikare
  2. Koda kategoriska variabler
  3. Feature-skalning: normalisering och standardisering
  4. Bygga pipelines för förbehandling
← Tillbaka till Lär Er AI med Python