1. 程式人生 > >數據處理——One-Hot Encoding

數據處理——One-Hot Encoding

blog view 數據 機器學習算法 tar ces copyto copy itl

一、One-Hot Encoding

One-Hot編碼,又稱為一位有效編碼,主要是采用技術分享位狀態寄存器來對技術分享個狀態進行編碼,每個狀態都由他獨立的寄存器位,並且在任意時候只有一位有效。 在實際的機器學習的應用任務中,特征有時候並不總是連續值,有可能是一些分類值,如性別可分為“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代碼

[python] view plain copy
  1. from sklearn import preprocessing
  2. enc = preprocessing.OneHotEncoder()
  3. enc.fit([[0,0,3],[1,1,0],[0,2,1],[1,0,2]])
  4. array = enc.transform([[0,1,3]]).toarray()
  5. print array

結果:[[ 1. 0. 0. 1. 0. 0. 0. 0. 1.]]

數據處理——One-Hot Encoding