Encodeur Ordinal
Le prochain problème à traiter concerne les données catégorielles. Il existe deux principaux types de variables catégorielles.
Les données ordinales possèdent un ordre naturel, tandis que les données nominales n’en ont pas. En raison de cet ordre, les catégories peuvent être codées sous forme de nombres selon leur classement.
Par exemple, une colonne 'rate'
avec les valeurs 'Terrible', 'Bad', 'OK', 'Good' et 'Great' peut être codée comme suit :
- 'Terrible' → 0
- 'Bad' → 1
- 'OK' → 2
- 'Good' → 3
- 'Great' → 4
Pour encoder des données ordinales, on utilise le OrdinalEncoder
. Celui-ci convertit les catégories en entiers à partir de 0.
OrdinalEncoder
s’applique de la même manière que les autres transformateurs. La principale difficulté réside dans la spécification correcte de l’argument categories
.
Par exemple, considérons un jeu de données (différent du jeu de données penguins) contenant une colonne 'education'
. La première étape consiste à vérifier ses valeurs uniques.
12345import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/adult_edu.csv') print(df['education'].unique())
Une liste ordonnée de valeurs catégorielles doit être créée, allant de 'HS-grad'
à 'Doctorate'
.
1234567891011121314import pandas as pd from sklearn.preprocessing import OrdinalEncoder # Load the data and assign X, y variables df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/adult_edu.csv') y = df['income'] # 'income' is a target in this dataset X = df.drop('income', axis=1) # Create a list of categories so HS-grad is encoded as 0 and Doctorate as 6 edu_categories = ['HS-grad', 'Some-college', 'Assoc', 'Bachelors', 'Masters', 'Prof-school', 'Doctorate'] # Initialize an OrdinalEncoder instance with the correct categories ord_enc = OrdinalEncoder(categories=[edu_categories]) # Transform the 'education' column and print it X['education'] = ord_enc.fit_transform(X[['education']]) print(X['education'])
Lors de la transformation de plusieurs caractéristiques avec OrdinalEncoder
, les catégories pour chaque colonne doivent être spécifiquement indiquées. Cela se fait via l'argument categories
:
encoder = OrdinalEncoder(categories=[col1_categories, col2_categories, ...])
1. Quelle affirmation décrit le mieux l'utilisation de OrdinalEncoder
pour traiter les données catégorielles dans un jeu de données ?
2. Supposons que vous ayez une colonne catégorielle nommée 'Color'
. Serait-il approprié d'utiliser OrdinalEncoder
pour encoder ses valeurs ?
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 3.13
Encodeur Ordinal
Glissez pour afficher le menu
Le prochain problème à traiter concerne les données catégorielles. Il existe deux principaux types de variables catégorielles.
Les données ordinales possèdent un ordre naturel, tandis que les données nominales n’en ont pas. En raison de cet ordre, les catégories peuvent être codées sous forme de nombres selon leur classement.
Par exemple, une colonne 'rate'
avec les valeurs 'Terrible', 'Bad', 'OK', 'Good' et 'Great' peut être codée comme suit :
- 'Terrible' → 0
- 'Bad' → 1
- 'OK' → 2
- 'Good' → 3
- 'Great' → 4
Pour encoder des données ordinales, on utilise le OrdinalEncoder
. Celui-ci convertit les catégories en entiers à partir de 0.
OrdinalEncoder
s’applique de la même manière que les autres transformateurs. La principale difficulté réside dans la spécification correcte de l’argument categories
.
Par exemple, considérons un jeu de données (différent du jeu de données penguins) contenant une colonne 'education'
. La première étape consiste à vérifier ses valeurs uniques.
12345import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/adult_edu.csv') print(df['education'].unique())
Une liste ordonnée de valeurs catégorielles doit être créée, allant de 'HS-grad'
à 'Doctorate'
.
1234567891011121314import pandas as pd from sklearn.preprocessing import OrdinalEncoder # Load the data and assign X, y variables df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/adult_edu.csv') y = df['income'] # 'income' is a target in this dataset X = df.drop('income', axis=1) # Create a list of categories so HS-grad is encoded as 0 and Doctorate as 6 edu_categories = ['HS-grad', 'Some-college', 'Assoc', 'Bachelors', 'Masters', 'Prof-school', 'Doctorate'] # Initialize an OrdinalEncoder instance with the correct categories ord_enc = OrdinalEncoder(categories=[edu_categories]) # Transform the 'education' column and print it X['education'] = ord_enc.fit_transform(X[['education']]) print(X['education'])
Lors de la transformation de plusieurs caractéristiques avec OrdinalEncoder
, les catégories pour chaque colonne doivent être spécifiquement indiquées. Cela se fait via l'argument categories
:
encoder = OrdinalEncoder(categories=[col1_categories, col2_categories, ...])
1. Quelle affirmation décrit le mieux l'utilisation de OrdinalEncoder
pour traiter les données catégorielles dans un jeu de données ?
2. Supposons que vous ayez une colonne catégorielle nommée 'Color'
. Serait-il approprié d'utiliser OrdinalEncoder
pour encoder ses valeurs ?
Merci pour vos commentaires !