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_output
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_output=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 :
import pandas as pd
importe la bibliothèque pandas pour la manipulation de données sous forme deDataFrame
.
from sklearn.preprocessing import OneHotEncoder
importe le OneHotEncoder de la bibliothèque scikit-learn, qui est utilisé pour transformer des variables catégorielles en une représentation One-Hot.Création d’un DataFrame
Le dictionnaire
data
contient deux colonnes :'produit'
(valeurs catégorielles) et'prix'
(valeurs numériques). Ces données sont converties en unDataFrame
à l’aide depd.DataFrame(data)
.Création de l'encodeur OneHotEncoder
encoder = OneHotEncoder(sparse_output=False)
crée un objet OneHotEncoder qui transformera la colonne'produit'
en colonnes binaires One-Hot. Le paramètresparse_output=False
assure que la sortie sera sous forme deDataFrame
plutôt que sous forme de matrice sparse.Transformation de la colonne
'produit'
encoded = encoder.fit_transform(df[['produit']])
applique l’encodage One-Hot à la colonne'produit'
. La méthodefit_transform()
ajuste l’encodeur sur la colonne et la transforme en une matrice binaire.Création du DataFrame avec les colonnes encodées
df_encoded = pd.DataFrame(encoded, columns=encoder.get_feature_names_out(['produit']))
crée un nouveauDataFrame
avec les résultats de l’encodage One-Hot, en nommant les colonnes en fonction des catégories de'produit'
(par exemple,'produit_A'
,'produit_B'
,'produit_C'
).Affichage du DataFrame encodé
print(df_encoded)
affiche leDataFrame
résultant, avec les colonnes One-Hot encodées pour la variable'produit'
.