數據預處理之獨熱編碼(One-Hot Encoding)

比如
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)
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章