Categorische variabelen coderen
Label encoding, one-hot encoding, ordinal encoding en pd.get_dummies() versus sklearn OrdinalEncoder.
Categorische variabelen coderen is een gratis Leer AI met Python-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Leer AI met Python. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Leer AI met Python bevat in totaal 4 lessen.
Waarom categorieën coderen?
De meeste machinelearningmodellen hebben GETALLEN nodig, geen tekstlabels zoals "rood" of "klein". Codering zet categorische variabelen om in een numerieke vorm en behoudt daarbij hun betekenis.
Ordinaal versus nominaal
Ordinale categorieën hebben een natuurlijke volgorde (klein < middelgroot < groot). Nominale categorieën hebben die niet (rood, groen, blauw). De juiste codering hangt af van het soort categorieën dat je hebt.
Labelcodering voor ordinale gegevens
LabelEncoder koppelt elke categorie aan een geheel getal. Dit is geschikt voor ORDINALE gegevens waarbij de volgorde van de gehele getallen betekenisvol is.
from sklearn.preprocessing import LabelEncoder
sizes = ["small", "large", "medium", "small"]
le = LabelEncoder()
print(le.fit_transform(sizes)) # integers (alphabetical by default)Het gevaar bij nominale gegevens
Labelcodering toepassen op NOMINALE gegevens is riskant: het model kan rood=0, groen=1, blauw=2 interpreteren alsof groen "tussen" rood en blauw ligt, en zo een valse volgorde verzinnen. Gebruik in plaats daarvan one-hotcodering.
One-hotcodering met get_dummies
pd.get_dummies maakt één binaire kolom per categorie. Per rij is precies één kolom 1, zonder impliciete volgorde, wat ideaal is voor nominale variabelen.
import pandas as pd
df = pd.DataFrame({"color": ["red", "green", "blue", "red"]})
print(pd.get_dummies(df, columns=["color"]))De valkuil van dummyvariabelen
Wanneer k categorieën k kolommen opleveren, zijn die perfect collineair (ze tellen altijd op tot 1). Deze valkuil van dummyvariabelen verstoort lineaire modellen. Verwijder één kolom om dit op te lossen.
drop_first
drop_first=True verwijdert één categorie, zodat er k-1 kolommen overblijven. De verwijderde categorie wordt de impliciete basiscategorie (alleen nullen), waardoor collineariteit verdwijnt.
print(pd.get_dummies(df, columns=["color"], drop_first=True))
# one fewer column; the dropped color is the baselinesklearn OrdinalEncoder
Voor verwerkingsketens is OrdinalEncoder het sklearn-equivalent van labelcodering voor KENMERKEN. Je kunt er de volgorde van de categorieën expliciet mee opgeven.
from sklearn.preprocessing import OrdinalEncoder
enc = OrdinalEncoder(categories=[["small", "medium", "large"]])
print(enc.fit_transform([["medium"], ["large"], ["small"]]))sklearn OneHotEncoder
OneHotEncoder is het one-hotgereedschap dat geschikt is voor verwerkingsketens. Het leert categorieën uit trainingsgegevens en past dezelfde koppeling toe op nieuwe gegevens, wat cruciaal is voor productie.
from sklearn.preprocessing import OneHotEncoder
ohe = OneHotEncoder(sparse_output=False)
print(ohe.fit_transform([["red"], ["green"], ["blue"]]))Onbekende categorieën verwerken
Toetsgegevens kunnen categorieën bevatten die tijdens de training nooit zijn gezien. Stel handle_unknown="ignore" in, zodat OneHotEncoder alleen nullen uitvoert in plaats van vast te lopen.
ohe = OneHotEncoder(handle_unknown="ignore", sparse_output=False)
ohe.fit([["red"], ["green"]])
print(ohe.transform([["blue"]])) # all zeros, no errorKolommen met hoge cardinaliteit
One-hotcodering van een kolom met duizenden unieke waarden laat het aantal kenmerken exploderen. Overweeg bij hoge cardinaliteit doelcodering, hashing of het samenvoegen van zeldzame categorieën tot "overig".
Korte toets
Toets je kennis over codering.
Samenvatting
Gereedschapset voor codering:
- Ordinale gegevens -> codering als gehele getallen (
LabelEncoder/OrdinalEncoder) - Nominale gegevens -> one-hotcodering (
pd.get_dummies/OneHotEncoder) drop_first=Truevoorkomt de valkuil van dummyvariabelenhandle_unknown="ignore"voor onbekende toetscategorieën- Let op explosieve groei van kolommen met hoge cardinaliteit
Leer Python met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 53
- Lessen
- 225
Veelgestelde vragen
Is de les “Categorische variabelen coderen” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Leer AI met Python, waaronder “Categorische variabelen coderen”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Leer AI met Python bevat in totaal 4 lessen.
Wat leer ik in “Categorische variabelen coderen”?
Label encoding, one-hot encoding, ordinal encoding en pd.get_dummies() versus sklearn OrdinalEncoder. Je oefent met Leer AI met Python door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Leer AI met Python te beginnen?
Ervaring vooraf is niet nodig. Leer AI met Python op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “Categorische variabelen coderen”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Leer AI met Python?
Ja. Elke les over Leer AI met Python bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Uitschieters detecteren en verwijderen
- Categorische variabelen coderen
- Features schalen: normalisatie en standaardisatie
- Preprocessingpipelines bouwen