【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で縦方向にそれぞれのベクトルを変換している。

参考

403 Forbidden

人気記事

人気記事はこちら。

【Pytorch】テンソルの次元を追加・削除する方法【dim】
CUDA、cuDNNのバージョンをターミナルで調べるコマンド
【Pytorch】テンソルを連結する方法(cat・stack)
【Windows】好みのBing壁紙を保存する方法【Wallpaper】
【Python】Tensorflowをダウングレード・アップグレードするコマンド

新着記事

新着記事はこちら。

【クロアチア】アムステルダムから首都ザグレブへ飛行機で移動。ガーデンホテルに宿泊。
夜のアムステル市内を散策。国立モニュメントや川沿いの景色。夕食はビールとピザ。【オランダ】
クロアチアへ行く途中でアムステルダムで乗り換え。KLMを利用。観光で中央駅へ【オランダ】
【新宿】まさらダイニングで巨大チーズナンカレーを食べて満腹に。チーズの量が多い【東京】
【長野】エイブル白馬五竜スキー場でスキー。天気が良く快適に滑れた。

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