一义郑、One-Hot Encoding
One-Hot編碼刹泄,又稱為一位有效編碼桦踊,主要是采用N位狀態(tài)寄存器來對N個狀態(tài)進行編碼明棍,每個狀態(tài)都由他獨立的寄存器位,并且在任意時候只有一位有效耐版。
在實際的機器學(xué)習(xí)的應(yīng)用任務(wù)中拱绑,特征有時候并不總是連續(xù)值赋元,有可能是一些分類值掘譬,如性別可分為“male”和“female”泰演。在機器學(xué)習(xí)任務(wù)中,對于這樣的特征葱轩,通常我們需要對其進行特征數(shù)字化睦焕,如下面的例子:
有如下三個特征屬性:
1.性別:["male","female"]
2.地區(qū):["Europe"靴拱,"US"垃喊,"Asia"]
3.瀏覽器:["Firefox","Chrome"袜炕,"Safari"本谜,"Internet Explorer"]
對于某一個樣本,如["male"偎窘,"US"乌助,"Internet Explorer"],我們需要將這個分類值的特征數(shù)字化评架,最直接的方法眷茁,我們可以采用序列化的方式:[0,1,3]炕泳。但是這樣的特征處理并不能直接放入機器學(xué)習(xí)算法中纵诞。
二、One-Hot Encoding的處理方法
對于上述的問題培遵,性別的屬性是二維的浙芙,同理,地區(qū)是三維的籽腕,瀏覽器則是思維的嗡呼,這樣,我們可以采用One-Hot編碼的方式對上述的樣本“["male"皇耗,"US"南窗,"Internet Explorer"]”編碼,“male”則對應(yīng)著[1,0]万伤,同理“US”對應(yīng)著[0窒悔,1,0]敌买,“Internet Explorer”對應(yīng)著[0,0,0,1]简珠。則完整的特征數(shù)字化的結(jié)果為:[1,0,0,1,0,0,0,0,1]。這樣導(dǎo)致的一個結(jié)果就是數(shù)據(jù)會變得非常的稀疏虹钮。
三聋庵、實際的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)
原文參考:http://blog.csdn.net/google19890102/article/details/44039761