資料預處理之獨熱編碼(One-Hot Encoding)
阿新 • • 發佈:2019-01-02
比如
sex:[“male”, “female”]
country: [‘china’,’USA’,’Japan’]
正常數字量化後:
“male”, “female”用0,1表示;
‘china’,’USA’,’Japan’用0,1,2表示。
現在有3個樣本:
[‘male’,‘USA’],
[‘male’,‘Japan’],
[‘female’,’China’]
處理後:
[0,1]
[0,2]
[1,0]
上述資料也不能直接用在我們的分類器中。因為,分類器往往預設資料資料是連續有序的。但是,按照我們上述的表示,數字並不是有序的,而是隨機分配的。
為了解決上述問題,可以採用獨熱編碼(One-Hot Encoding)。獨熱編碼即 One-Hot 編碼,又稱一位有效編碼,其方法是使用N位狀態暫存器來對N個狀態進行編碼,每個狀態都由他獨立的暫存器位,並且在任意時候,其中只有一位有效。
sex有兩個取值,那麼可以這麼考慮:當取male時為01,取female時為10
country有三個取值,當取china時為001,取USA時為010,為Japan時為100。
這些特徵互斥,每次只有一個啟用。因此,資料會變成稀疏的。
這樣做的好處主要有:
解決了分類器不好處理屬性資料的問題
在一定程度上也起到了擴充特徵的作用
sklearn中有具體的處理方法:
import pandas as pd
data=
var_to_encode= [‘sex’,’country’]
data = pd.get_dummies(data, columns=var_to_encode)