Pandas Comment effectuer un encodage one-hot des données

Pandas - Encodage one-hot des données

 

Qu’est-ce que le codage One-Hot

 

Le codage One-Hot est une étape de prétraitement des données permettant de convertir les valeurs catégorielles en représentations numériques compatibles.

categorical_column bool_col col_1 col_2 label
value_A True 9 4 0
value_B False 7 2 0
value_D True 9 5 0
value_D False 8 3 1
value_D False 9 0 1
value_D False 5 4 1
value_B True 8 1 1
value_D True 6 6 1
value_C True 0 5 0

 

Par exemple, pour cet ensemble de données fictif, la colonne catégorielle a plusieurs valeurs de chaîne. De nombreux algorithmes d’apprentissage automatique nécessitent que les données d’entrée soient sous forme numérique. Par conséquent, nous avons besoin d’un moyen de convertir cet attribut de données en une forme compatible avec de tels algorithmes. Ainsi, nous décomposons la colonne catégorielle en plusieurs colonnes de valeurs binaires.

 

Comment utiliser la bibliothèque Pandas pour le codage One-Hot

 

Tout d’abord, lisez le fichier .csv ou tout autre fichier associé dans un dataframe Pandas.

df = pd.read_csv("data.csv")

 

Pour vérifier les valeurs uniques et mieux comprendre nos données, nous pouvons utiliser les fonctions Pandas suivantes.

df['categorical_column'].nunique()
df['categorical_column'].unique()

 

Pour ces données fictives, les fonctions renvoient la sortie suivante:

>>> 4
>>> tableau(['valeur_A', 'valeur_C', 'valeur_D', 'valeur_B'], dtype=objet)

 

Pour la colonne catégorielle, nous pouvons la décomposer en plusieurs colonnes. Pour cela, nous utilisons la méthode pandas.get_dummies(). Elle prend les arguments suivants :

Argument
data : tableau, série ou DataFrame L’objet DataFrame panda d’origine
columns : liste, par défaut None Liste des colonnes catégorielles à encoder
drop_first : booléen, par défaut False Supprime le premier niveau des étiquettes catégorielles

 

Pour mieux comprendre la fonction, travaillons sur l’encodage one-hot du jeu de données factice.

 

Encodage One-Hot des Colonnes Catégorielles

 

Nous utilisons la méthode get_dummies et passons le DataFrame d’origine en entrée data. Dans columns, nous passons une liste ne contenant que l’en-tête categorical_column.

df_encoded = pd.get_dummies(df, columns=['categorical_column', ])

 

Les commandes suivantes suppriment la colonne catégorielle et créent une nouvelle colonne pour chaque valeur unique. Par conséquent, la colonne catégorielle unique est convertie en 4 nouvelles colonnes où une seule des 4 colonnes aura une valeur de 1, et les 3 autres sont encodées en 0. C’est pourquoi on l’appelle encodage One-Hot.

categorical_column_valeur_A categorical_column_valeur_B categorical_column_valeur_C categorical_column_valeur_D
1 0 0 0
0 1 0 0
0 0 0 1
0 0 0 1
0 0 0 1
0 0 0 1
0 1 0 0
0 0 0 1
0 0 1 0
0 0 0 1

Le problème survient lorsque nous voulons encoder en one-hot la colonne booléenne. Cela crée également deux nouvelles colonnes.

Encodage à chaud des colonnes binaires

df_encoded = pd.get_dummies(df, columns=[bool_col, ])

bool_col_False bool_col_True
0 1
1 0
0 1
1 0

Nous augmentons inutilement une colonne alors que nous pouvons avoir uniquement une colonne où True est encodé en 1 et False est encodé en 0. Pour résoudre cela, nous utilisons l’argument drop_first.

df_encoded = pd.get_dummies(df, columns=['bool_col'], drop_first=True)

bool_col_True
1
0
1
0

Conclusion

Le jeu de données factice est encodé en one-hot où le résultat final ressemble à

col_1 col_2 bool A B C D label
9 4 1 1 0 0 0 0
7 2 0 0 1 0 0 0
9 5 1 0 0 0 1 0
8 3 0 0 0 0 1 1
9 0 0 0 0 0 1 1
5 4 0 0 0 0 1 1
8 1 1 0 1 0 0 1
6 6 1 0 0 0 1 1
0 5 1 0 0 1 0 0
1 8 1 0 0 0 1 0

Les valeurs catégoriques et les valeurs booléennes ont été converties en valeurs numériques pouvant être utilisées en tant qu’entrées pour les algorithmes d’apprentissage automatique. Muhammad Arham est un ingénieur en apprentissage profond travaillant dans le domaine de la vision par ordinateur et du traitement du langage naturel. Il a travaillé sur le déploiement et l’optimisation de plusieurs applications d’IA générative qui ont atteint les premières places mondiales chez Vyro.AI. Il s’intéresse à la construction et à l’optimisation de modèles d’apprentissage automatique pour les systèmes intelligents et croit en l’amélioration continue.

We will continue to update IPGirl; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

AI

Découvrez vLLM une bibliothèque d'apprentissage automatique open-source pour une inférence et une mise en service rapides de LLM.

Les grands modèles de langage (LLM) ont un impact de plus en plus important sur la façon dont nos vies quotidiennes e...

AI

OpenAI ouvre les portes de l'IA d'entreprise

Profitez des solutions d'entreprise d'OpenAI pour l'automatisation, la personnalisation et la conformité des entrepri...

AI

NVIDIA et Hexagon proposent une suite de solutions pour accélérer la digitalisation industrielle.

Pour que les entreprises industrielles atteignent le prochain niveau de numérisation, elles doivent créer des représe...

AI

Une nouvelle chimie

Les batteries à ions d'oxygène avancent.

Apprentissage automatique

Les GPU NVIDIA H100 établissent la norme pour l'IA générative dans le premier test de référence MLPerf.

Les utilisateurs principaux et les références de l’industrie sont d’accord : les cartes graphiques NVIDIA...

Science des données

vLLM PagedAttention pour une inférence LLM 24 fois plus rapide

Dans cet article, j'explique ce qu'est PagedAttention et pourquoi cela accélère considérablement le décodage.