【Python】整数ベクトルとOne-hotベクトルの相互変換を行うコード
Kaggleなどデータ分析で整数値→One-hotベクトル、One-hotベクトル→整数値に変換したいときがある。
その場合に実行すればよいコードを以下に簡単にまとめておく。
整数値→One-hotベクトル
例えば、10クラスの整数値(0~9)をOne-hotベクトルで表現する場合は以下のようなコードになる。
import numpy as np
n_labels = 10 # 0~9の10ラベル
vector = [1, 2, 3]
one_hot_vector = np.eye(n_labels)[vector]
# 出力
# array([[0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],
# [0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],
# [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.]])
これはベクトル[1, 2, 3]をそれぞれの要素をOne-hot表現して変換した場合のもの。
One-hotベクトル→整数値
逆に上記のOne-hotベクトル表現されたものをもとのベクトル[1, 2, 3]に戻したいときは以下のようなコードを書けばよい。
import numpy as np
one_hot_vector = np.array([[0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 1., 0., 0., 0., 0., 0., 0.]])
vector = np.argmax(one_hot_vector, axis=1)
# 出力
# array([1, 2, 3])
np.argmaxを使ってやれば、One-hotベクトルを元の整数値に戻すことができる。
axis=1で縦方向にそれぞれのベクトルを変換している。
参考
【Python】整数ベクトル と one hot表現 相互変換 | Python図書館
機械学習のクラス分類を行う際に、整数ベクトルをone hot表現に変換したいときがある。逆もしかり。ここでは、numpyを使って相互に変換する方法を解説します。 整数ベクトルをone hot表現変換 3クラスの整数値をone hot表現に変
人気記事
人気記事はこちら。
新着記事
新着記事はこちら。