Encodage des variables catégorielles
Encodage par étiquettes, encodage one-hot, encodage ordinal, pd.get_dummies() et sklearn OrdinalEncoder.
Encodage des variables catégorielles est une leçon Learn AI with Python gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Learn AI with Python, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Learn AI with Python comprend 4 leçons au total.
Pourquoi encoder les catégories ?
La plupart des modèles d'apprentissage automatique ont besoin de NUMBERS, et non d'étiquettes textuelles comme « rouge » ou « petit ». L'encodage convertit les variables catégorielles en forme numérique tout en préservant leur signification.
Ordinales ou nominales
Les catégories ordinales ont un ordre naturel (petit < moyen < grand). Les catégories nominales n'en ont pas (rouge, vert, bleu). Le bon encodage dépend du type de catégories dont vous disposez.
Encodage par étiquettes pour les données ordinales
LabelEncoder associe chaque catégorie à un entier. Il convient aux données ORDINAL pour lesquelles l'ordre des entiers a une signification.
from sklearn.preprocessing import LabelEncoder
sizes = ["small", "large", "medium", "small"]
le = LabelEncoder()
print(le.fit_transform(sizes)) # integers (alphabetical by default)Le danger pour les données nominales
Appliquer un encodage par étiquettes à des données NOMINAL est risqué : le modèle peut interpréter rouge=0, vert=1, bleu=2 comme si vert se situait « entre » rouge et bleu, inventant ainsi un ordre inexistant. Utilisez plutôt un encodage à variables indicatrices.
Encodage à variables indicatrices avec get_dummies
pd.get_dummies crée une colonne binaire par catégorie. Une seule colonne vaut 1 par ligne, sans ordre implicite, ce qui convient parfaitement aux variables nominales.
import pandas as pd
df = pd.DataFrame({"color": ["red", "green", "blue", "red"]})
print(pd.get_dummies(df, columns=["color"]))Le piège des variables indicatrices
Lorsque k catégories produisent k colonnes, celles-ci sont parfaitement colinéaires (leur somme vaut toujours 1). Ce piège des variables indicatrices perturbe les modèles linéaires. Supprimez une colonne pour le corriger.
drop_first
drop_first=True supprime une catégorie et laisse k-1 colonnes. La catégorie supprimée devient la référence implicite (toutes les valeurs sont nulles), ce qui élimine la colinéarité.
print(pd.get_dummies(df, columns=["color"], drop_first=True))
# one fewer column; the dropped color is the baselineOrdinalEncoder de sklearn
Pour les chaînes de traitement, OrdinalEncoder est l'équivalent sklearn de l'encodage par étiquettes pour les FEATURES et permet de définir explicitement l'ordre des catégories.
from sklearn.preprocessing import OrdinalEncoder
enc = OrdinalEncoder(categories=[["small", "medium", "large"]])
print(enc.fit_transform([["medium"], ["large"], ["small"]]))OneHotEncoder de sklearn
OneHotEncoder est l'outil d'encodage à variables indicatrices adapté aux chaînes de traitement. Il apprend les catégories à partir des données d'entraînement et applique la même correspondance aux nouvelles données, ce qui est essentiel en production.
from sklearn.preprocessing import OneHotEncoder
ohe = OneHotEncoder(sparse_output=False)
print(ohe.fit_transform([["red"], ["green"], ["blue"]]))Gérer les catégories inconnues
Le jeu de données d'évaluation peut contenir des catégories jamais rencontrées lors de l'entraînement. Définissez handle_unknown="ignore" afin que OneHotEncoder produise uniquement des zéros au lieu de provoquer une erreur.
ohe = OneHotEncoder(handle_unknown="ignore", sparse_output=False)
ohe.fit([["red"], ["green"]])
print(ohe.transform([["blue"]])) # all zeros, no errorColonnes à forte cardinalité
L'encodage à variables indicatrices d'une colonne contenant des milliers de valeurs uniques fait exploser le nombre de variables. Pour une forte cardinalité, envisagez l'encodage par cible, le hachage ou le regroupement des catégories rares sous « autres ».
Vérification rapide
Vérifiez vos connaissances sur l'encodage.
Récapitulatif
Boîte à outils d'encodage :
- Données ordinales -> encodage entier (
LabelEncoder/OrdinalEncoder) - Données nominales -> encodage à variables indicatrices (
pd.get_dummies/OneHotEncoder) drop_first=Trueévite le piège des variables indicatriceshandle_unknown="ignore"pour les catégories inconnues du jeu d'évaluation- Surveillez l'explosion du nombre de colonnes à forte cardinalité
Questions Fréquemment Posées
La leçon « Encodage des variables catégorielles » est-elle gratuite ?
Oui — le texte complet de « Encodage des variables catégorielles » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Learn AI with Python, passe à CoddyKit PRO. Le cours Learn AI with Python comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Encodage des variables catégorielles » ?
Encodage par étiquettes, encodage one-hot, encodage ordinal, pd.get_dummies() et sklearn OrdinalEncoder. Tu pratiques Learn AI with Python avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Learn AI with Python ?
Aucune expérience préalable n'est requise. Learn AI with Python sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Encodage des variables catégorielles » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Learn AI with Python ?
Oui. Chaque leçon Learn AI with Python inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Détection et suppression des valeurs aberrantes
- Encodage des variables catégorielles
- Mise à l’échelle des caractéristiques : normalisation et standardisation
- Construire des pipelines de prétraitement