獨熱編碼 One Hot Eocode

2021-09-12 15:48:32 字數 1392 閱讀 5757

#假設現在我們要對5張手寫數字進行分類,這些數字的標籤labels的範圍是0~9,形成(5, )的行向量,為####

#[5,4,3,8,7]。

labels = [5,4,3,8,7]

num_classes = 10

batch_size = tf.size(labels)

#labels表示的標籤,5張有5個標籤。batch_size=5

labels = tf.expand_dims(labels, 1)

#擴充維數,將(5,)擴充為(5,1),裡面的內容不變:[[5],[4],[3],[8],[7]]

indices = tf.expand_dims(tf.range(0, batch_size, 1), 1)

#擴充維數。由於batch_size=(5, ),迴圈之後生成5*1的矩陣:[[0],[1],[2],[3],[4]]

concated = tf.concat(1, [indices, labels])

#將indices和labels在第二維連線,形成5*2的矩陣:[[0,5],[1,4],[2,3],[3,8],[4,7]]

onehot_labels = tf.sparse_to_dense(

concated, tf.stack([batch_size, num_classes]), 1.0, 0.0)

#轉化為獨熱編碼。

#tf.pack()將兩個向量打包成乙個。由於batch_size=5和num_classes=10都是數,合併為行向量:[5,10]

#tf.sparse_to_dense()將稀疏矩陣轉密集矩陣。stack()函式指定生成的矩陣的shape為5*10,concated指定更換值的座標,1.0表示將concated指定座標的值更換為1,0.0表示其餘座標值置0.

import pandas as pd

print("---初始資料集---\n")

data=pd.dataframe([

['red','class1','yi',0.233333],

['green','class2','er',0.654321],

['blue','class1','san',0.123456]])

data.columns=['color','class','id','value']

print(data)

print("---對映後資料集---\n")

'yi':11,

'er':22,

'san':33}

print(data)

print("---「one-hot」後資料集---\n")

data=pd.get_dummies(data)

print(data)

One Hot encoder獨熱編碼

ref 1 什麼是獨熱碼 獨熱碼,在英文文獻中稱做 one hot code,直觀來說就是有多少個狀態就有多少位元,而且只有乙個位元為1,其他全為0的一種碼制。在機器學習中對於離散型的分型別的資料,需要對其進行數位化比如說性別這一屬性,只能有男性或者女性或者其他這三種值,如何對這三個值進行數位化表達...

獨熱編碼函式

想用自己的資料進行獨熱編碼,一開始沒用官方的程式。from sklearn import preprocessing enc preprocessing.onehotencoder 想用這個函式的可以參考博主 我找的是github裡的乙個程式 可以參考下。貼上 def one hot y n cla...

Python實現獨熱編碼

關於獨熱編碼與啞變數編碼的概念,可以參考 離散特徵的編碼分為兩種情況 1 離散特徵的取值之間沒有大小的意義,比如color red,blue 此時可以使用one hot編碼 2 離散特徵的取值有大小的意義,比如size x,xl,xxl 此時可以使用數值的對映。import pandas as pd...