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)
Explication du code :
- DataFrame : Le DataFrame contient une colonne
'niveau_education'
avec des niveaux d'éducation ordonnés (Bac, Licence, Master, Doctorat). OrdinalEncoder
: L'encodeur est configuré avec l'argumentcategories
, qui spécifie explicitement l'ordre des catégories.fit_transform()
: Cette méthode ajuste l'encodeur aux données et effectue la transformation de la colonne'niveau_education'
en valeurs entières en respectant l'ordre spécifié.- Ajout de la colonne encodée : La colonne encodée est ajoutée au DataFrame sous le nom
'niveau_education_encoded'
.
Remarques :
- Utilisation avec des catégories non vues : Lors de l'utilisation avec des données nouvelles, vous pouvez rencontrer des catégories inconnues. L'option
handle_unknown='use_encoded_value'
est très utile pour gérer ce cas. - Pas nécessaire pour les variables nominales : Si vos données ne sont pas ordinales (pas d'ordre entre les catégories), il vaut mieux utiliser
OneHotEncoder
oupd.get_dummies()
.
- DataFrame : Le DataFrame contient une colonne