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 :
import pandas as pd
importe la bibliothèque pandas pour la manipulation de données sous forme deDataFrame
.
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 unDataFrame
avec 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'argumentcategories
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'
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'] = encoded
ajoute la colonne encodée auDataFrame
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 leDataFrame
final avec les niveaux d'éducation originaux et les valeurs numériques encodées.