天天看點

特征向量化之one-hot(獨熱編碼)

特征向量化之one-hot(獨熱編碼)

one-hot編碼,又稱獨熱編碼、一位有效編碼。其方法是使用N位狀态寄存器來對N個狀态進行編碼,每個狀态都有它獨立的寄存器位。例如:

import pandas as pd
import numpy as np

data=pd.DataFrame({'feature_1':[1,2,3,4,5],
                   'feature_2':['a','b','a','b','a']})
data
           
feature_1 feature_2
1 a
1 2 b
2 3 a
3 4 b
4 5 a

上述資料中有兩個特征,其中特征二有兩個類别:a和b,在進行特征進行中,如果我們将a和b量化,但是a和b又是兩個不相關的類别,那麼分類器就會預設a和b之間是有順序的。這樣影響。如果我們将feature_2中的a,b對應兩種狀态,1 代表處于這種狀态,0代表不處于這種狀态。那麼第一個樣本中的特征二可以表示為{1 0},第二樣本的特征二就表示為{0,1}。于是特征二被向量化,映射到歐式空間中的一個點。相當于增加了特征,對于根據距離來進行分類的分類器,會提高分類器的魯棒性。但是像決策樹、随機森林這樣的算法來就意義不大,相當于增加了樹的深度。

我們可以利用pandas中的get_dummies()函數來進行one-hot編碼

tmpdf=pd.get_dummies(data['feature_2'],prefix='feature_2')
tmpdf
           
feature_2_a feature_2_b
1
1 1
2 1
3 1
4 1
# 添加進資料集
data=data.join(tmpdf)
data
           
feature_1 feature_2 feature_2_a feature_2_b
1 a 1
1 2 b 1
2 3 a 1
3 4 b 1
4 5 a 1

繼續閱讀