【Python】整数ベクトルとOne-hotベクトルを相互変換するコード

スポンサーリンク

【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表現に変

人気記事

人気記事はこちら。

CUDA、cuDNNのバージョンをターミナルで調べるコマンド
【Pytorch】テンソルを連結する方法(cat・stack)
【Pytorch】テンソルの次元を追加・削除する方法【dim】
【Protobuf】"TypeError: Descriptors cannot not be created directly."を解決する【solved】
【Python】Tensorflowをダウングレード・アップグレードするコマンド

新着記事

新着記事はこちら。

寿司打記録更新
【インド】バンガロールの5つ星ホテルに宿泊。Four Seasons Hotel
【インド】ハイデラバードからバンガロールへ移動
Ubuntu20.04でRealSenseの環境構築を行う。realsense-rosも。コマンド。
インド工科大学ハイデラバード校を訪問。宿泊も。

タイトルとURLをコピーしました