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 OrdinalEncoderAttributs :
Paramètre Type Description Valeur par défaut categorieslist, optionnel Liste des catégories à encoder. Si None, les catégories sont automatiquement déterminées à partir des données d'entraînement.Nonehandle_unknownstr, optionnel Définit la gestion des catégories inconnues. use_encoded_valuepeut être utilisé pour attribuer une valeur spécifique.errordtypestr, optionnel Type de retour de l'encodeur. Par défaut, c'est np.int64.np.int64Exemple 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 :
import pandas as pdimporte la bibliothèque pandas pour la manipulation de données sous forme deDataFrame.
from sklearn.preprocessing import OrdinalEncoderimporte 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
datacontient 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 unDataFrameavec la méthodepd.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'argumentcategoriesspé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'duDataFrame. 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'] = encodedajoute la colonne encodée auDataFramed'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 leDataFramefinal avec les niveaux d'éducation originaux et les valeurs numériques encodées.