Comment effectuer un encodage One-Hot en Python



L’encodage à chaud est utilisé pour convertir des variables catégorielles dans un format pouvant être facilement utilisé par les algorithmes d’apprentissage automatique .

L’idée de base du codage one-hot est de créer de nouvelles variables qui prennent les valeurs 0 et 1 pour représenter les valeurs catégorielles d’origine.

Par exemple, l’image suivante montre comment nous effectuerions un codage à chaud pour convertir une variable catégorielle contenant des noms d’équipe en de nouvelles variables contenant uniquement des valeurs 0 et 1 :

L’exemple étape par étape suivant montre comment effectuer un encodage à chaud pour cet ensemble de données exact en Python.

Étape 1 : Créer les données

Tout d’abord, créons le DataFrame pandas suivant :

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'B', 'B', 'B', 'B', 'C', 'C'],
                   'points': [25, 12, 15, 14, 19, 23, 25, 29]})

#view DataFrame
print(df)

  team  points
0    A      25
1    A      12
2    B      15
3    B      14
4    B      19
5    B      23
6    C      25
7    C      29

Étape 2 : Effectuer un encodage à chaud

Ensuite, importons la fonction OneHotEncoder() depuis la bibliothèque sklearn et utilisons-la pour effectuer un encodage à chaud sur la variable ‘team’ dans le DataFrame pandas :

from sklearn.preprocessing import OneHotEncoder

#creating instance of one-hot-encoder
encoder = OneHotEncoder(handle_unknown='ignore')

#perform one-hot encoding on 'team' column 
encoder_df = pd.DataFrame(encoder.fit_transform(df[['team']]).toarray())

#merge one-hot encoded columns back with original DataFrame
final_df = df.join(encoder_df)

#view final df
print(final_df)

  team  points    0    1    2
0    A      25  1.0  0.0  0.0
1    A      12  1.0  0.0  0.0
2    B      15  0.0  1.0  0.0
3    B      14  0.0  1.0  0.0
4    B      19  0.0  1.0  0.0
5    B      23  0.0  1.0  0.0
6    C      25  0.0  0.0  1.0
7    C      29  0.0  0.0  1.0

Notez que trois nouvelles colonnes ont été ajoutées au DataFrame puisque la colonne « équipe » d’origine contenait trois valeurs uniques.

Remarque : Vous pouvez trouver la documentation complète de la fonction OneHotEncoder() ici .

Étape 3 : Supprimez la variable catégorielle d’origine

Enfin, nous pouvons supprimer la variable ‘team’ d’origine du DataFrame puisque nous n’en avons plus besoin :

#drop 'team' column
final_df.drop('team', axis=1, inplace=True)

#view final df
print(final_df)

   points    0    1    2
0      25  1.0  0.0  0.0
1      12  1.0  0.0  0.0
2      15  0.0  1.0  0.0
3      14  0.0  1.0  0.0
4      19  0.0  1.0  0.0
5      23  0.0  1.0  0.0
6      25  0.0  0.0  1.0
7      29  0.0  0.0  1.0

Connexe : Comment supprimer des colonnes dans Pandas (4 méthodes)

On pourrait également renommer les colonnes du DataFrame final pour les rendre plus faciles à lire :

#rename columns
final_df.columns = ['points', 'teamA', 'teamB', 'teamC']

#view final df
print(final_df)

   points  teamA  teamB  teamC
0      25    1.0    0.0    0.0
1      12    1.0    0.0    0.0
2      15    0.0    1.0    0.0
3      14    0.0    1.0    0.0
4      19    0.0    1.0    0.0
5      23    0.0    1.0    0.0
6      25    0.0    0.0    1.0
7      29    0.0    0.0    1.0

L’encodage à chaud est terminé et nous pouvons maintenant insérer ce DataFrame pandas dans n’importe quel algorithme d’apprentissage automatique que nous souhaitons.

Ressources additionnelles

Comment calculer une moyenne tronquée en Python
Comment effectuer une régression linéaire en Python
Comment effectuer une régression logistique en Python

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *