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 OneHotEncoderAttributs :
Paramètre Type Description Valeur par défaut sparse_outputbool Si True, renvoie une matrice sparse (plus économe en mémoire pour les grands ensembles de données).Truehandle_unknownstr Spécifie comment gérer les catégories inconnues. Par exemple, ignoresignifie que les catégories inconnues sont ignorées.errordropstr Spécifie la catégorie à supprimer pour éviter la multicolinéarité, comme firstpour supprimer la première catégorie.NoneExemple 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 pdimporte la bibliothèque pandas pour la manipulation de données sous forme deDataFrame.
from sklearn.preprocessing import OneHotEncoderimporte 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
datacontient 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=Falseassure que la sortie sera sous forme deDataFrameplutô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 nouveauDataFrameavec 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 leDataFramerésultant, avec les colonnes One-Hot encodées pour la variable'produit'.