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)
    Résultat du code

    Explication du code :

    import pandas as pd importe la bibliothèque pandas pour la manipulation de données sous forme de DataFrame.
    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 un DataFrame à l’aide de pd.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ètre sparse_output=False assure que la sortie sera sous forme de DataFrame 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éthode fit_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 nouveau DataFrame 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 le DataFrame résultant, avec les colonnes One-Hot encodées pour la variable 'produit'.