Encodage One-Hot sur NumPy Array en Python
- Utilisez le module NumPy pour effectuer un encodage à chaud sur un tableau NumPy en Python
-
Utilisez le module
sklearn
pour effectuer un encodage à chaud sur un tableau NumPy en Python -
Utilisez le module
pandas
pour effectuer un encodage à chaud sur un tableau NumPy en Python -
Utilisez le module
keras
pour effectuer un encodage à chaud sur un tableau NumPy en Python
Python dispose d’un vaste cadre disponible pour l’apprentissage automatique. Nous pouvons facilement former et tester des modèles. Cependant, lorsqu’il s’agit de données catégorielles, certains algorithmes ne peuvent pas fonctionner avec de telles étiquettes de données et nécessitent des valeurs numériques.
Par conséquent, le codage à chaud est une technique très utilisée pour coder des données avant de les utiliser dans un algorithme.
Dans ce didacticiel, nous allons apprendre à effectuer un encodage à chaud sur des tableaux numpy.
Utilisez le module NumPy pour effectuer un encodage à chaud sur un tableau NumPy en Python
Dans cette méthode, nous allons générer un nouveau tableau contenant les données encodées. Nous utiliserons la fonction numpy.zeros()
pour créer un tableau de 0 de la taille requise. Nous remplacerons alors 0 par 1 aux emplacements correspondants en utilisant la fonction numpy.arange()
.
Par example,
import numpy as np
a = np.array([1, 0, 3])
b = np.zeros((a.size, a.max() + 1))
b[np.arange(a.size), a] = 1
print(b)
Production:
[[0. 1. 0. 0.]
[1. 0. 0. 0.]
[0. 0. 0. 1.]]
Nous pouvons également utiliser la fonction eye()
pour effectuer un encodage one-hot sur des tableaux. Il renvoie un bidimensionnel avec 1 à la diagonale principale et 0 ailleurs par défaut. Nous pouvons utiliser cette méthode et spécifier les emplacements que nous voulons que les 1 soient, comme indiqué ci-dessous.
import numpy as np
values = [1, 0, 3]
n_values = np.max(values) + 1
print(np.eye(n_values)[values])
Production:
[[0. 1. 0. 0.]
[1. 0. 0. 0.]
[0. 0. 0. 1.]]
Utilisez le module sklearn
pour effectuer un encodage à chaud sur un tableau NumPy en Python
sklearn.preprocessing.LabelBinarizer
est une classe disponible en Python, qui peut effectuer cet encodage efficacement. Il est utilisé pour binariser des étiquettes multiples en les convertissant sous forme numérique. Nous utiliserons la fonction transform()
pour convertir les données en utilisant un objet de cette classe.
Le code suivant explique cela.
import sklearn.preprocessing
import numpy as np
a = np.array([1, 0, 3])
label_binarizer = sklearn.preprocessing.LabelBinarizer()
label_binarizer.fit(range(max(a) + 1))
b = label_binarizer.transform(a)
print(b)
Production:
[[0 1 0 0]
[1 0 0 0]
[0 0 0 1]]
Utilisez le module pandas
pour effectuer un encodage à chaud sur un tableau NumPy en Python
Les jeux de données pour les algorithmes d’apprentissage automatique se présentent généralement sous la forme d’un DataFrame pandas
. Le module pandas
est donc bien équipé pour effectuer l’encodage des données. Le get_dummies()
peut être utilisé pour convertir un ensemble de données catégoriques en indicateurs numériques, effectuant ainsi le codage one-hot. Le résultat final est un DataFrame.
Par example,
import pandas as pd
import numpy as np
a = np.array([1, 0, 3])
b = pd.get_dummies(a)
print(b)
Production:
0 1 3
0 0 1 0
1 1 0 0
2 0 0 1
Utilisez le module keras
pour effectuer un encodage à chaud sur un tableau NumPy en Python
Le module keras
est largement utilisé pour le Machine Learning en Python. La fonction to_categorical()
de ce module peut effectuer un encodage à chaud sur des données.
L’extrait de code ci-dessous montre comment procéder.
from keras.utils.np_utils import to_categorical
import numpy as np
a = np.array([1, 0, 3])
b = to_categorical(a, num_classes=(len(a) + 1))
print(b)
Production:
[[0. 1. 0. 0.]
[1. 0. 0. 0.]
[0. 0. 0. 1.]]
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn