Exercices Machine Learning LabelEncoder : encoder les catégories
🎉

Bravo!

Débutant 🧠 Fondamentaux 10 XP 0 personnes ont réussi

LabelEncoder : encoder les catégories

Un algorithme de ML ne sait pas ce que veut dire 'rouge' ou 'bleu'. Il ne comprend que les nombres. Si tu as une colonne categorielle comme la couleur, la ville ou la profession, tu dois la convertir en nombres avant de l'utiliser.

Le LabelEncoder de sklearn fait ca : il attribue un nombre entier a chaque catégorie unique. Par exemple, 'bleu' -> 0, 'rouge' -> 1, 'vert' -> 2 (ordre alphabetique).

Attention : le LabelEncoder crée un ordre artificiel (0 < 1 < 2). Pour une colonne comme 'couleur', ca n'a pas de sens. On l'utilise surtout pour la colonne cible (target) ou quand l'ordre est logique (petit/moyen/grand).

from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
le.fit_transform(liste_de_valeurs) # apprend et transforme en une fois
le.classes_ # les catégories trouvees

Écris une fonction encoder_colonne(valeurs) qui prend une liste de strings et renvoie un dictionnaire avec :
'encodees' : la liste des valeurs encodees (en int)
'mapping' : un dictionnaire catégorie -> nombre

Exemple :

encoder_colonne(['chat', 'chien', 'chat', 'poisson'])
# {'encodees': [0, 1, 0, 2], 'mapping': {'chat': 0, 'chien': 1, 'poisson': 2}}

Tests (4/4)

Encodage basique
result = encoder_colonne(['chat', 'chien', 'chat', 'poisson'])
assert result['encodees'] == [0, 1, 0, 2]
Mapping correct
result = encoder_colonne(['b', 'a', 'c'])
assert result['mapping'] == {'a': 0, 'b': 1, 'c': 2}
Une seule catégorie
result = encoder_colonne(['x', 'x', 'x'])
assert result['encodees'] == [0, 0, 0]
assert result['mapping'] == {'x': 0}
Deux catégories
result = encoder_colonne(['oui', 'non', 'oui'])
assert result['mapping']['non'] == 0
assert result['mapping']['oui'] == 1

Indices (3 disponibles)

solution.py