python之如何將標簽轉化為one-hot(獨熱編碼)
更新時間:2023年06月25日 15:20:05 作者:云端淺藍
這篇文章主要介紹了python之如何將標簽轉化為one-hot(獨熱編碼)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
將標簽轉化為one-hot(獨熱編碼)
問題描述
在利用categorical_crossentropy作為損失函數時,需要將標簽設定為one-hot格式,即每個標簽的長度應轉換為一個長度為類別數的向量,該向量除了所屬的類別位置為1之外,其他位置值為0。
from keras.utils.np_utils import to_categorical categorical_labels = to_categorical(int_labels, num_classes=None)
示例:
import numpy as np int_labels = np.array([2,1,3,5]) from keras.utils.np_utils import to_categorical categorical_labels = to_categorical(int_labels, num_classes=None) print(categorical_labels)
將矩陣X轉換為one-hot矩陣
Python中將X(假設X的大小為1*m,類別為k類)轉換為one-hot矩陣
準備一個eye(k)矩陣,然后根據X將對應的列取出來。(或者把行取出來再轉置)
def conv_to_one_hot(X,n): ? ? X = np.array(X) ? ? refer = np.eye(n) ? ? X_one_hot = refer[X] ? ? return X_one_hot.T X=[3,5,4,7] print(conv_to_one_hot(X,8))
結果為:
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]
[1. 0. 0. 0.]
[0. 0. 1. 0.]
[0. 1. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 1.]]
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。