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

人気記事

人気記事はこちら。

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

新着記事

新着記事はこちら。

【美幌】めし屋 和幸で夕食【北海道】
パシフィコ横浜で開催のICRA2024に参加・発表【横浜】
【箱根】ホテルグリーンプラザ箱根で宿泊。バイキングが充実。【神奈川】
【箱根】恩賜箱根公園を散策。思ったよりも広い。【神奈川】
【神奈川】箱根神社周辺を散策。多くの観光客が訪れている

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