One-Hot-Codierung auf NumPy-Array in Python
- Verwenden des NumPy-Moduls zum Durchführen von One-Hot-Codierung auf einem NumPy-Array in Python
-
Verwendung des Moduls
sklearn
zur Durchführung einer One-Hot-Kodierung auf einem NumPy-Array in Python -
Verwendung des Moduls
pandas
zur Durchführung einer One-Hot-Kodierung auf einem NumPy-Array in Python -
Verwendung des Moduls
keras
zur Durchführung einer One-Hot-Kodierung auf einem NumPy-Array in Python
Python verfügt über ein umfassendes Framework für maschinelles Lernen. Wir können Modelle leicht trainieren und testen. Bei kategorialen Daten können einige Algorithmen jedoch nicht mit solchen Datenbeschriftungen arbeiten und erfordern numerische Werte.
Daher ist die One-Hot-Codierung eine häufig verwendete Technik zum Codieren von Daten, bevor sie in einem Algorithmus verwendet werden.
In diesem Tutorial erfahren Sie, wie Sie eine One-Hot-Codierung für NumPy-Arrays durchführen.
Verwenden des NumPy-Moduls zum Durchführen von One-Hot-Codierung auf einem NumPy-Array in Python
Bei dieser Methode generieren wir ein neues Array, das die codierten Daten enthält. Wir werden die Funktion numpy.zeros()
verwenden, um ein Array von Nullen der erforderlichen Größe zu erstellen. Wir werden dann 0 an den entsprechenden Stellen durch 1 ersetzen, indem wir die Funktion numpy.arange()
verwenden.
Beispielsweise,
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)
Ausgabe:
[[0. 1. 0. 0.]
[1. 0. 0. 0.]
[0. 0. 0. 1.]]
Wir können auch die Funktion eye()
verwenden, um eine One-Hot-Codierung für Arrays durchzuführen. Es wird standardmäßig eine zweidimensionale Version mit 1 an der Hauptdiagonale und 0 an anderer Stelle zurückgegeben. Wir können diese Methode verwenden und die Positionen angeben, an denen 1s sein sollen, wie unten gezeigt.
import numpy as np
values = [1, 0, 3]
n_values = np.max(values) + 1
print(np.eye(n_values)[values])
Ausgabe:
[[0. 1. 0. 0.]
[1. 0. 0. 0.]
[0. 0. 0. 1.]]
Verwendung des Moduls sklearn
zur Durchführung einer One-Hot-Kodierung auf einem NumPy-Array in Python
Der sklearn.preprocessing.LabelBinarizer
ist eine in Python verfügbare Klasse, die diese Codierung effizient durchführen kann. Es wird verwendet, um Mehrfachbeschriftungen zu binarisieren, indem sie in eine numerische Form konvertiert werden. Wir werden die Funktion transform()
verwenden, um die Daten mit einem Objekt dieser Klasse zu konvertieren.
Der folgende Code erklärt dies.
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)
Ausgabe:
[[0 1 0 0]
[1 0 0 0]
[0 0 0 1]]
Verwendung des Moduls pandas
zur Durchführung einer One-Hot-Kodierung auf einem NumPy-Array in Python
Datensätze für Algorithmen für maschinelles Lernen haben normalerweise die Form eines pandas
-DataFrames. Daher ist das pandas
-Modul für die Datencodierung gut gerüstet. Mit get_dummies()
kann ein kategorialer Datensatz in numerische Indikatoren konvertiert werden, um die One-Hot-Codierung durchzuführen. Das Endergebnis ist ein DataFrame.
Beispielsweise,
import pandas as pd
import numpy as np
a = np.array([1, 0, 3])
b = pd.get_dummies(a)
print(b)
Ausgabe:
0 1 3
0 0 1 0
1 1 0 0
2 0 0 1
Verwendung des Moduls keras
zur Durchführung einer One-Hot-Kodierung auf einem NumPy-Array in Python
Das Modul keras
wird häufig für maschinelles Lernen in Python verwendet. Die Funktion to_categorical()
dieses Moduls kann eine One-Hot-Codierung für Daten durchführen.
Das folgende Code-Snippet zeigt, wie.
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)
Ausgabe:
[[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