Exercices Machine Learning OneHotEncoding avec get_dummies
🎉

Bravo!

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

OneHotEncoding avec get_dummies

Le LabelEncoder a un probleme : il cree un ordre artificiel. Si 'bleu' vaut 0 et 'vert' vaut 2, le modele pourrait croire que 'vert' est deux fois plus important que 'bleu'. Pour les couleurs ou les villes, ca n'a aucun sens.

Le One-Hot Encoding resout ce problème. Au lieu d'une seule colonne avec des nombres, on crée une colonne par catégorie, avec 1 si la ligne appartient a cette catégorie, 0 sinon.

Exemple : couleur = ['rouge', 'bleu', 'vert'] devient 3 colonnes :
couleur_bleu : [0, 1, 0]
couleur_rouge : [1, 0, 0]
couleur_vert : [0, 0, 1]

En pandas, pd.get_dummies(df, columns=['colonne']) fait ca automatiquement.

Écris une fonction one_hot_encode(df, colonnes) qui prend un DataFrame et une liste de noms de colonnes a encoder, et renvoie le DataFrame avec ces colonnes transformees en one-hot.

Exemple :

df = pd.DataFrame({'couleur': ['rouge', 'bleu'], 'taille': [10, 20]})
one_hot_encode(df, ['couleur'])
# DataFrame avec colonnes: taille, couleur_bleu, couleur_rouge

Tests (4/4)

Encoding simple
import pandas as pd
df = pd.DataFrame({'couleur': ['rouge', 'bleu'], 'taille': [10, 20]})
result = one_hot_encode(df, ['couleur'])
assert 'couleur_rouge' in result.columns
assert 'couleur_bleu' in result.columns
assert 'couleur' not in result.columns
Valeurs correctes
import pandas as pd
df = pd.DataFrame({'x': ['a', 'b', 'a']})
result = one_hot_encode(df, ['x'])
assert list(result['x_a']) == [1, 0, 1]
assert list(result['x_b']) == [0, 1, 0]
Colonnes numeriques preservees
import pandas as pd
df = pd.DataFrame({'cat': ['x', 'y'], 'num': [1, 2]})
result = one_hot_encode(df, ['cat'])
assert list(result['num']) == [1, 2]
Plusieurs colonnes
import pandas as pd
df = pd.DataFrame({'a': ['x', 'y'], 'b': ['p', 'q']})
result = one_hot_encode(df, ['a', 'b'])
assert 'a_x' in result.columns
assert 'b_p' in result.columns

Indices (3 disponibles)

solution.py