Encodage One-Hot avec OneHotEncoder
L’encodage One-Hot avec OneHotEncoder de Scikit-learn est une méthode permettant de transformer des variables catégorielles en un format binaire, où chaque catégorie est représentée par une colonne. Contrairement à pd.get_dummies(), OneHotEncoder de Scikit-learn est principalement utilisé pour traiter des données avant de les intégrer dans des modèles d’apprentissage automatique. Cette méthode crée une matrice creuse (sparse matrix) par défaut, ce qui permet d’économiser de la mémoire lorsqu’il y a un grand nombre de catégories. Chaque catégorie d’une variable est convertie en une colonne binaire, où la valeur est 1 si la ligne appartient à cette catégorie, et 0 sinon. OneHotEncoder peut aussi être utilisé pour encoder plusieurs colonnes à la fois et permet de gérer des catégories inconnues lors de l’entraînement, ce qui est utile pour le traitement de nouvelles données lors de la prédiction.
Fonctions :
-
OneHotEncoder
OneHotEncoder de la bibliothèque Scikit-learn est une autre méthode pour effectuer un encodage One-Hot. Contrairement à pd.get_dummies(), OneHotEncoder renvoie une matrice de type sparse, ce qui permet de gérer plus efficacement les grands ensembles de données. Il est souvent utilisé lorsque vous travaillez avec des modèles de machine learning qui nécessitent une transformation explicite des variables catégorielles en une forme numérique. Le résultat est une représentation binaire où chaque catégorie est représentée par une colonne distincte.
Importation :
import pandas as pd from sklearn.preprocessing import OneHotEncoder
Attributs :
Paramètre Type Description Valeur par défaut sparse
bool Si True
, renvoie une matrice sparse (plus économe en mémoire pour les grands ensembles de données).True
handle_unknown
str Spécifie comment gérer les catégories inconnues. Par exemple, ignore
signifie que les catégories inconnues sont ignorées.error
drop
str Spécifie la catégorie à supprimer pour éviter la multicolinéarité, comme first
pour supprimer la première catégorie.None
Exemple de code :
import pandas as pd from sklearn.preprocessing import OneHotEncoder # Exemple de DataFrame data = { 'produit': ['A', 'B', 'C', 'B', 'A', 'C'], 'prix': [10, 20, 30, 20, 10, 30] } df = pd.DataFrame(data) # Création de l'encodeur OneHotEncoder encoder = OneHotEncoder(sparse=False) # Transformation de la colonne 'produit' encoded = encoder.fit_transform(df[['produit']]) # Création d'un DataFrame avec les colonnes encodées df_encoded = pd.DataFrame(encoded, columns=encoder.get_feature_names_out(['produit'])) print(df_encoded)
Explication du code :
- DataFrame : Le DataFrame contient une colonne
'produit'
avec des valeurs catégorielles ('A', 'B', 'C'). OneHotEncoder
: Nous utilisonsOneHotEncoder
pour encoder la colonne'produit'
en valeurs binaires.fit_transform()
: Cette méthode ajuste l'encodeur aux données et effectue la transformation, convertissant les valeurs de la colonne'produit'
en colonnes binaires.sparse=False
: Nous spécifions que le résultat doit être une matrice dense (par défaut, une matrice sparse est renvoyée).get_feature_names_out()
: Cela permet de récupérer les noms des nouvelles colonnes créées par l'encodage.
Remarques :
- Utilisation avec plusieurs colonnes : Comme
pd.get_dummies()
,OneHotEncoder
peut encoder plusieurs colonnes catégorielles en une seule opération en les passant dans une liste. - Valeurs manquantes :
OneHotEncoder
ne gère pas directement les valeurs manquantes. Assurez-vous de les traiter avant de passer les données à l'encodeur.
- DataFrame : Le DataFrame contient une colonne