機械学習のクラス分類を行う際に、整数ベクトルをone hot表現に変換したいときがある。逆もしかり。
ここでは、numpyを使って相互に変換する方法を解説します。
目次
整数ベクトルをone hot表現変換
3クラスの整数値をone hot表現に変換する例
# 例として扱う3クラス分類の整数ベクトル
target_vector = [1, 0, 2, 1, 2]
import numpy as np
# 分類クラス数を取得し、one hot表現に変換
n_labels = len(np.unique(target_vector ))
target_one_hot = np.eye(n_labels)[target_vector]
#array([[ 0., 1., 0.],
# [ 1., 0., 0.],
# [ 0., 0., 1.],
# [ 0., 1., 0.],
# [ 0., 0., 1.]])
one hot表現変換を整数ベクトルに変換
one hot表現を3クラスの整数値に変換する。argmax
を活用する
# 例として扱う3クラス分類の整数ベクトル
target_one_hot
#array([[ 0., 1., 0.],
# [ 1., 0., 0.],
# [ 0., 0., 1.],
# [ 0., 1., 0.],
# [ 0., 0., 1.]])
# one hot表現を整数ベクトルに変換
target_vector = np.argmax(target_one_hot, axis=1)
# [1, 0, 2, 1, 2]