Codifica One-Hot su NumPy Array in Python
- Usa il modulo NumPy per eseguire la codifica One-Hot su un array NumPy in Python
-
Usa il modulo
sklearn
per eseguire una codifica rapida su un array NumPy in Python -
Usa il modulo
pandas
per eseguire una codifica rapida su un array NumPy in Python -
Usa il modulo
keras
per eseguire una codifica rapida su un array NumPy in Python
Python ha un vasto framework disponibile per l’apprendimento automatico. Possiamo addestrare e testare facilmente i modelli. Tuttavia, quando si tratta di dati categoriali, alcuni algoritmi non possono operare con tali etichette di dati e richiedono valori numerici.
Pertanto, la codifica one-hot è una tecnica molto utilizzata per codificare i dati prima di utilizzarli in un algoritmo.
In questo tutorial, impareremo come eseguire la codifica one-hot su array numpy.
Usa il modulo NumPy per eseguire la codifica One-Hot su un array NumPy in Python
In questo metodo, genereremo un nuovo array che contiene i dati codificati. Useremo la funzione numpy.zeros()
per creare un array di 0 della dimensione richiesta. Sostituiremo quindi 0 con 1 nelle posizioni corrispondenti utilizzando la funzione numpy.arange()
.
Per esempio,
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)
Produzione:
[[0. 1. 0. 0.]
[1. 0. 0. 0.]
[0. 0. 0. 1.]]
Possiamo anche usare la funzione eye()
per eseguire una codifica one-hot sugli array. Restituisce un bidimensionale con 1 sulla diagonale principale e 0 altrove per impostazione predefinita. Possiamo usare questo metodo e specificare le posizioni che vogliamo che siano gli 1, come mostrato di seguito.
import numpy as np
values = [1, 0, 3]
n_values = np.max(values) + 1
print(np.eye(n_values)[values])
Produzione:
[[0. 1. 0. 0.]
[1. 0. 0. 0.]
[0. 0. 0. 1.]]
Usa il modulo sklearn
per eseguire una codifica rapida su un array NumPy in Python
sklearn.preprocessing.LabelBinarizer
è una classe disponibile in Python, che può eseguire questa codifica in modo efficiente. Viene utilizzato per binarizzare più etichette convertendole in formato numerico. Useremo la funzione transform()
per convertire i dati usando un oggetto di questa classe.
Il codice seguente lo spiega.
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)
Produzione:
[[0 1 0 0]
[1 0 0 0]
[0 0 0 1]]
Usa il modulo pandas
per eseguire una codifica rapida su un array NumPy in Python
I set di dati per gli algoritmi di Machine Learning hanno solitamente la forma di un DataFrame pandas
. Pertanto il modulo pandas
è ben attrezzato per eseguire la codifica dei dati. Il get_dummies()
può essere utilizzato per convertire un dataset categoriale in indicatori numerici, eseguendo così la codifica one-hot. Il risultato finale è un DataFrame.
Per esempio,
import pandas as pd
import numpy as np
a = np.array([1, 0, 3])
b = pd.get_dummies(a)
print(b)
Produzione:
0 1 3
0 0 1 0
1 1 0 0
2 0 0 1
Usa il modulo keras
per eseguire una codifica rapida su un array NumPy in Python
Il modulo keras
è ampiamente utilizzato per l’apprendimento automatico in Python. La funzione to_categorical()
di questo modulo può eseguire una codifica rapida sui dati.
Lo snippet di codice di seguito mostra come.
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)
Produzione:
[[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