Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Encodeur One-Hot | Prétraitement des Données avec Scikit-learn
Introduction au ML Avec Scikit-Learn

bookEncodeur One-Hot

Lorsqu'il s'agit de valeurs nominales, leur traitement est un peu plus complexe.

Pour les données ordinales, telles que les évaluations d'utilisateurs allant de 'Terrible' à 'Excellent', les encoder sous forme de nombres de 0 à 4 est approprié, car le modèle peut saisir l'ordre inhérent.

En revanche, pour une caractéristique comme 'city' comportant cinq catégories distinctes, les encoder sous forme de nombres de 0 à 4 suggérerait à tort un ordre. Dans ce cas, l'encodage one-hot est préférable, car il représente les catégories sans impliquer de hiérarchie.

Pour encoder des données nominales, on utilise le transformateur OneHotEncoder. Il crée une colonne pour chaque valeur unique. Ensuite, pour chaque ligne, il attribue 1 à la colonne correspondant à la valeur de cette ligne et 0 aux autres colonnes.

Ce qui était à l'origine 'NewYork' a maintenant 1 dans la colonne 'City_NewYork' et 0 dans les autres colonnes City_.

Appliquer OneHotEncoder au jeu de données penguins. Les variables nominales sont 'island' et 'sex'. La colonne 'species' est la cible et sera traitée séparément lors de la discussion sur l'encodage de la cible dans le prochain chapitre.

123456
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') print('island: ', df['island'].unique()) print('sex: ', df['sex'].unique())
copy

Pour appliquer OneHotEncoder, initialiser l'objet encodeur et transmettre les colonnes sélectionnées à .fit_transform(), de la même manière qu'avec d'autres transformateurs.

1234567891011
import pandas as pd from sklearn.preprocessing import OneHotEncoder df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') # Assign X, y variables y = df['species'] X = df.drop('species', axis=1) # Initialize an OneHotEncoder object one_hot = OneHotEncoder() # Print transformed 'sex', 'island' columns print(one_hot.fit_transform(X[['sex', 'island']]).toarray())
copy
Note
Remarque

La méthode .toarray() convertit la matrice creuse produite par OneHotEncoder en un tableau NumPy dense. Les tableaux denses affichent explicitement toutes les valeurs, ce qui facilite la visualisation et la manipulation des données encodées dans un DataFrame. Les matrices creuses ne stockent que les éléments non nuls, optimisant ainsi l'utilisation de la mémoire. Vous pouvez omettre cette méthode pour observer la différence de sortie.

question mark

OneHotEncoder crée de nouvelles colonnes. Est-ce correct ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 6

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

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

bookEncodeur One-Hot

Glissez pour afficher le menu

Lorsqu'il s'agit de valeurs nominales, leur traitement est un peu plus complexe.

Pour les données ordinales, telles que les évaluations d'utilisateurs allant de 'Terrible' à 'Excellent', les encoder sous forme de nombres de 0 à 4 est approprié, car le modèle peut saisir l'ordre inhérent.

En revanche, pour une caractéristique comme 'city' comportant cinq catégories distinctes, les encoder sous forme de nombres de 0 à 4 suggérerait à tort un ordre. Dans ce cas, l'encodage one-hot est préférable, car il représente les catégories sans impliquer de hiérarchie.

Pour encoder des données nominales, on utilise le transformateur OneHotEncoder. Il crée une colonne pour chaque valeur unique. Ensuite, pour chaque ligne, il attribue 1 à la colonne correspondant à la valeur de cette ligne et 0 aux autres colonnes.

Ce qui était à l'origine 'NewYork' a maintenant 1 dans la colonne 'City_NewYork' et 0 dans les autres colonnes City_.

Appliquer OneHotEncoder au jeu de données penguins. Les variables nominales sont 'island' et 'sex'. La colonne 'species' est la cible et sera traitée séparément lors de la discussion sur l'encodage de la cible dans le prochain chapitre.

123456
import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') print('island: ', df['island'].unique()) print('sex: ', df['sex'].unique())
copy

Pour appliquer OneHotEncoder, initialiser l'objet encodeur et transmettre les colonnes sélectionnées à .fit_transform(), de la même manière qu'avec d'autres transformateurs.

1234567891011
import pandas as pd from sklearn.preprocessing import OneHotEncoder df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') # Assign X, y variables y = df['species'] X = df.drop('species', axis=1) # Initialize an OneHotEncoder object one_hot = OneHotEncoder() # Print transformed 'sex', 'island' columns print(one_hot.fit_transform(X[['sex', 'island']]).toarray())
copy
Note
Remarque

La méthode .toarray() convertit la matrice creuse produite par OneHotEncoder en un tableau NumPy dense. Les tableaux denses affichent explicitement toutes les valeurs, ce qui facilite la visualisation et la manipulation des données encodées dans un DataFrame. Les matrices creuses ne stockent que les éléments non nuls, optimisant ainsi l'utilisation de la mémoire. Vous pouvez omettre cette méthode pour observer la différence de sortie.

question mark

OneHotEncoder crée de nouvelles colonnes. Est-ce correct ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 6
some-alt