Encodage des Variables Catégorielles
Les algorithmes de clustering comme K-means nécessitent des données numériques. Les variables catégorielles doivent être converties en format numérique à l'aide d'un encodage. Vous découvrirez l'encodage ordinal et l'encodage one-hot.
Encodage ordinal
L'encodage ordinal convertit des catégories ordonnées en valeurs numériques, en préservant leur rang. Par exemple, l'encodage ordinal de la colonne 'education_level'
transformera ses valeurs de "High School"
, "Bachelor's"
, "Master's"
, 'PhD'
en 0
, 1
, 2
, 3
.
Cela suppose une différence numérique significative entre les valeurs encodées, ce qui peut ne pas toujours être exact.
from sklearn.preprocessing import OrdinalEncoder
education_levels = [['High School',
"Bachelor's",
"Master's",
"PhD"]]
encoder = OrdinalEncoder(categories=education_levels)
df[['education_encoded']] = encoder.fit_transform(df[['education_level']])
Cet encodage doit uniquement être utilisé pour les variables ordinales où l'ordre des catégories est important.
Encodage One-Hot
L'encodage one-hot convertit les catégories nominales (non ordonnées) en colonnes binaires, où chaque catégorie devient une nouvelle colonne. Pour une variable comportant n
catégories, cela crée généralement n
colonnes — une colonne vaut 1
pour la catégorie correspondante, les autres valent 0
. Cependant, seules n-1
colonnes sont réellement nécessaires pour représenter l'information sans redondance.
Par exemple, une colonne 'color'
avec les valeurs 'red'
, 'blue'
et 'green'
peut être encodée avec seulement deux colonnes : 'color_red'
et 'color_blue'
. Si une ligne a 0
dans les deux colonnes, cela implique que la couleur est 'green'
. En supprimant une colonne, on évite la redondance.
La suppression de la colonne redondante est spécifiée via drop='first'
:
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder(drop='first', sparse=False)
encoded = encoder.fit_transform(df[['color']])
Bien que l'encodage one-hot évite d'imposer un ordre et convienne aux variables nominales, il peut augmenter la dimensionnalité des données.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Awesome!
Completion rate improved to 2.94
Encodage des Variables Catégorielles
Glissez pour afficher le menu
Les algorithmes de clustering comme K-means nécessitent des données numériques. Les variables catégorielles doivent être converties en format numérique à l'aide d'un encodage. Vous découvrirez l'encodage ordinal et l'encodage one-hot.
Encodage ordinal
L'encodage ordinal convertit des catégories ordonnées en valeurs numériques, en préservant leur rang. Par exemple, l'encodage ordinal de la colonne 'education_level'
transformera ses valeurs de "High School"
, "Bachelor's"
, "Master's"
, 'PhD'
en 0
, 1
, 2
, 3
.
Cela suppose une différence numérique significative entre les valeurs encodées, ce qui peut ne pas toujours être exact.
from sklearn.preprocessing import OrdinalEncoder
education_levels = [['High School',
"Bachelor's",
"Master's",
"PhD"]]
encoder = OrdinalEncoder(categories=education_levels)
df[['education_encoded']] = encoder.fit_transform(df[['education_level']])
Cet encodage doit uniquement être utilisé pour les variables ordinales où l'ordre des catégories est important.
Encodage One-Hot
L'encodage one-hot convertit les catégories nominales (non ordonnées) en colonnes binaires, où chaque catégorie devient une nouvelle colonne. Pour une variable comportant n
catégories, cela crée généralement n
colonnes — une colonne vaut 1
pour la catégorie correspondante, les autres valent 0
. Cependant, seules n-1
colonnes sont réellement nécessaires pour représenter l'information sans redondance.
Par exemple, une colonne 'color'
avec les valeurs 'red'
, 'blue'
et 'green'
peut être encodée avec seulement deux colonnes : 'color_red'
et 'color_blue'
. Si une ligne a 0
dans les deux colonnes, cela implique que la couleur est 'green'
. En supprimant une colonne, on évite la redondance.
La suppression de la colonne redondante est spécifiée via drop='first'
:
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder(drop='first', sparse=False)
encoded = encoder.fit_transform(df[['color']])
Bien que l'encodage one-hot évite d'imposer un ordre et convienne aux variables nominales, il peut augmenter la dimensionnalité des données.
Merci pour vos commentaires !