TensorFlow實戰:SoftMax手寫體MNIST識別(Python完整源碼)
代碼下載 softmax_mnist
一、One-Hot Encoding
? ? One-Hot編碼,又稱為一位有效編碼,主要是采用N位狀態寄存器來對N個狀態進行編碼,每個狀態都由他獨立的寄存器位,并且在任意時候只有一位有效。
? ? 在實際的機器學習的應用任務中,特征有時候并不總是連續值,有可能是一些分類值,如性別可分為“male”和“female”。在機器學習任務中,對于這樣的特征,通常我們需要對其進行特征數字化,如下面的例子:
有如下三個特征屬性:
性別:["male","female"]
地區:["Europe","US","Asia"]
瀏覽器:["Firefox","Chrome","Safari","Internet Explorer"]
對于某一個樣本,如["male","US","Internet Explorer"],我們需要將這個分類值的特征數字化,最直接的方法,我們可以采用序列化的方式:[0,1,3]。但是這樣的特征處理并不能直接放入機器學習算法中。
二、One-Hot Encoding的處理方法
對于上述的問題,性別的屬性是二維的,同理,地區是三維的,瀏覽器則是四維的,這樣,我們可以采用One-Hot編碼的方式對上述的樣本“["male","US","Internet Explorer"]”編碼,“male”則對應著[1,0],同理“US”對應著[0,1,0],“Internet Explorer”對應著[0,0,0,1]。則完整的特征數字化的結果為:[1,0,0,1,0,0,0,0,1]。這樣導致的一個結果就是數據會變得非常的稀疏。
三、實際的Python代碼
from sklearn import preprocessing
enc = preprocessing.OneHotEncoder()
enc.fit([[0,0,3],[1,1,0],[0,2,1],[1,0,2]])
array = enc.transform([[0,1,3]]).toarray()
print array
結果:[[ 1. ?0. ?0. ?1. ?0. ?0. ?0. ?0. ?1.]]
fit中的四個代表四個訓練樣本,表示的是每一維的可能取值,比如“性別”這一維只有兩個值:0和1,那么在四個樣本中第一維是0或者1,其他依次類推
tensorflow 學習筆記(1) MNIST for beginners
TensorFlow 入門之手寫識別(MNIST) softmax算法