Python の NumPy 配列でのワンホットエンコーディング

Manav Narula 2023年1月30日
  1. NumPy モジュールを使用して Python の NumPy 配列でワンホットエンコーディングを実行する
  2. Python の NumPy 配列で sklearn モジュールを使用してワンホットエンコーディングを実行する
  3. Python の NumPy 配列で pandas モジュールを使用してワンホットエンコーディングを実行する
  4. Python の NumPy 配列で keras モジュールを使用してワンホットエンコーディングを実行する
Python の NumPy 配列でのワンホットエンコーディング

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 Narula
Manav Narula avatar Manav Narula avatar

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