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 utilisons OneHotEncoder 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.