Python の NumPy 配列でのワンホットエンコーディング
- NumPy モジュールを使用して Python の NumPy 配列でワンホットエンコーディングを実行する
-
Python の NumPy 配列で
sklearn
モジュールを使用してワンホットエンコーディングを実行する -
Python の NumPy 配列で
pandas
モジュールを使用してワンホットエンコーディングを実行する -
Python の NumPy 配列で
keras
モジュールを使用してワンホットエンコーディングを実行する
Python には、機械学習に利用できる広大なフレームワークがあります。モデルのトレーニングとテストを簡単に行うことができます。ただし、カテゴリデータに関しては、一部のアルゴリズムはそのようなデータラベルで動作できず、数値が必要です。
したがって、ワンホットエンコーディングは、アルゴリズムで使用する前にデータをエンコードするためによく使用される手法です。
このチュートリアルでは、numpy 配列でワンホットエンコーディングを実行する方法を学習します。
NumPy モジュールを使用して Python の NumPy 配列でワンホットエンコーディングを実行する
このメソッドでは、エンコードされたデータを含む新しい配列を生成します。numpy.zeros()
関数を使用して、必要なサイズの 0 の配列を作成します。次に、numpy.arange()
関数を使用して、対応する場所で 0 を 1 に置き換えます。
例えば、
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)
出力:
[[0. 1. 0. 0.]
[1. 0. 0. 0.]
[0. 0. 0. 1.]]
eye()
関数を使用して、配列に対してワンホットエンコーディングを実行することもできます。デフォルトでは、主対角線が 1、その他の場所が 0 の 2 次元を返します。以下に示すように、この方法を使用して、1 を指定する場所を指定できます。
import numpy as np
values = [1, 0, 3]
n_values = np.max(values) + 1
print(np.eye(n_values)[values])
出力:
[[0. 1. 0. 0.]
[1. 0. 0. 0.]
[0. 0. 0. 1.]]
Python の NumPy 配列で sklearn
モジュールを使用してワンホットエンコーディングを実行する
sklearn.preprocessing.LabelBinarizer
は Python で利用可能なクラスであり、このエンコーディングを効率的に実行できます。マルチラベルを数値形式に変換して 2 値化するために使用されます。transform()
関数を使用して、このクラスのオブジェクトを使用してデータを変換します。
次のコードはこれを説明しています。
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)
出力:
[[0 1 0 0]
[1 0 0 0]
[0 0 0 1]]
Python の NumPy 配列で pandas
モジュールを使用してワンホットエンコーディングを実行する
機械学習アルゴリズムのデータセットは通常、pandas
データフレームの形式です。したがって、pandas
モジュールはデータエンコーディングを実行するための設備が整っています。get_dummies()
を使用して、カテゴリデータセットを数値インジケータに変換し、ワンホットエンコーディングを実行できます。最終結果は DataFrame です。
例えば、
import pandas as pd
import numpy as np
a = np.array([1, 0, 3])
b = pd.get_dummies(a)
print(b)
出力:
0 1 3
0 0 1 0
1 1 0 0
2 0 0 1
Python の NumPy 配列で keras
モジュールを使用してワンホットエンコーディングを実行する
keras
モジュールは、Python の機械学習に広く使用されています。このモジュールの to_categorical()
関数は、データに対してワンホットエンコーディングを実行できます。
以下のコードスニペットはその方法を示しています。
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)
出力:
[[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