Encodage des variables ordinales avec OrdinalEncoder

L’encodage des variables ordinales avec OrdinalEncoder de Scikit-learn est une méthode permettant de convertir des variables catégorielles ordinales en valeurs numériques. Les variables ordinales ont un ordre ou un classement implicite entre les différentes catégories (par exemple, « petit », « moyen », « grand »). OrdinalEncoder attribue à chaque catégorie un entier correspondant à sa position dans l’ordre défini. Par exemple, dans le cas de la variable « taille » avec les catégories « petit », « moyen » et « grand », l’encoder pourrait affecter les valeurs 0, 1 et 2, respectivement. Ce type d’encodage est adapté aux modèles d’apprentissage automatique qui prennent en compte l’ordre des catégories. Contrairement à l’encodage One-Hot, qui crée des colonnes binaires indépendantes, l’encodage ordinal conserve l’information de classement dans une seule colonne numérique. Il est important de s’assurer que les catégories suivent un ordre logique, sinon l’utilisation de l’OrdinalEncoder pourrait induire en erreur le modèle.

Fonctions :

  • OrdinalEncoder

    L'OrdinalEncoder de Scikit-learn est utilisé pour encoder des variables catégorielles ordinales, où les catégories ont un ordre ou une hiérarchie. Contrairement à l'OneHotEncoder, qui crée des colonnes distinctes pour chaque catégorie, l'OrdinalEncoder attribue un entier à chaque catégorie selon un ordre spécifié ou par défaut. Il est idéal lorsque l'ordre des catégories a une signification, comme dans le cas des évaluations de qualité, des niveaux d'éducation, ou des catégories temporelles.

    Importation :

    import pandas as pd
    from sklearn.preprocessing import OrdinalEncoder

    Attributs :

    Paramètre Type Description Valeur par défaut
    categories list, optionnel Liste des catégories à encoder. Si None, les catégories sont automatiquement déterminées à partir des données d'entraînement. None
    handle_unknown str, optionnel Définit la gestion des catégories inconnues. use_encoded_value peut être utilisé pour attribuer une valeur spécifique. error
    dtype str, optionnel Type de retour de l'encodeur. Par défaut, c'est np.int64. np.int64

    Exemple de code :

    import pandas as pd
    from sklearn.preprocessing import OrdinalEncoder
    
    # Exemple de DataFrame avec une variable ordinale
    data = {
        'niveau_education': ['Bac', 'Master', 'Doctorat', 'Licence', 'Master', 'Bac'],
    }
    df = pd.DataFrame(data)
    
    # Création de l'encodeur OrdinalEncoder
    encoder = OrdinalEncoder(categories=[['Bac', 'Licence', 'Master', 'Doctorat']])
    
    # Transformation de la colonne 'niveau_education'
    encoded = encoder.fit_transform(df[['niveau_education']])
    
    # Ajout de la colonne encodée au DataFrame
    df['niveau_education_encoded'] = encoded
    
    print(df)
    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 OrdinalEncoder importe l'encodeur OrdinalEncoder de la bibliothèque scikit-learn, qui est utilisé pour encoder des variables ordinales en valeurs numériques.

    Création d’un DataFrame

    Le dictionnaire data contient une seule colonne 'niveau_education' avec des valeurs représentant différents niveaux d'éducation (Bac, Licence, Master, Doctorat). Ces données sont converties en un DataFrame avec la méthode pd.DataFrame(data).

    Création de l'encodeur OrdinalEncoder

    encoder = OrdinalEncoder(categories=[['Bac', 'Licence', 'Master', 'Doctorat']]) crée un objet OrdinalEncoder avec un ordre défini des catégories. L'argument categories spécifie explicitement l'ordre des niveaux d'éducation, où 'Bac' est le niveau le plus bas et 'Doctorat' le plus élevé.

    Transformation de la colonne 'niveau_education'

    encoded = encoder.fit_transform(df[['niveau_education']]) applique l'encodeur ordinal à la colonne 'niveau_education' du DataFrame. Cela remplace chaque niveau d'éducation par un entier correspondant à son ordre dans la liste spécifiée. Par exemple, 'Bac' sera encodé en 0, 'Licence' en 1, et ainsi de suite.

    Ajout de la colonne encodée au DataFrame

    df['niveau_education_encoded'] = encoded ajoute la colonne encodée au DataFrame d'origine, créant une nouvelle colonne 'niveau_education_encoded' avec les valeurs numériques correspondantes.

    Affichage du DataFrame avec la colonne encodée

    print(df) affiche le DataFrame final avec les niveaux d'éducation originaux et les valeurs numériques encodées.