Python | One-Hot Encoding (独热编码)

独热编码(One-Hot Encoding),又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效。即,只有一位是1,其余都是零值。独热编码 是利用0和1表示一些参数,使用N位状态寄存器来对N个状态进行编码。

地区特征:["北京","上海,"深圳"](这里N=3,三维数据):
北京 => 100
上海 => 010
深圳 => 001

在回归,分类,聚类等机器学习算法中,特征之间距离的计算或相似度的计算是非常重要的。而常用的距离或相似度的计算都是在欧式空间的相似度计算,计算余弦相似性,基于的就是欧式空间。
使用独热编码(One-Hot Encoding),将离散特征的取值扩展到了欧式空间,离散特征的某个取值就对应欧式空间的某个点。将离散型特征使用独热编码(One-Hot Encoding),会让特征之间的距离计算更加合理。
OneHotEncoderget_dummies都是将分类变量(categorical features)转化为数字变量(numerical features)的方法。
OneHotEncoder 来自于sklearn。
from sklearn.preprocessing import OneHotEncoder

get_dummies来自于Pandas。
import Pandas as pd

B = ['bird','cat','dog', 'cat', 'bird', 'bird'] 
d = {'categorical': B}
df = pd.DataFrame(d)
print(df)
  categorical
0        bird
1         cat
2         dog
3         cat
4        bird
5        bird
dfDummies = pd.get_dummies(df['categorical'], prefix = 'category')
print(dfDummies)
   category_bird  category_cat  category_dog
0              1             0             0
1              0             1             0
2              0             0             1
3              0             1             0
4              1             0             0
5              1             0             0
print(dfDummies.values)
[[1 0 0]
 [0 1 0]
 [0 0 1]
 [0 1 0]
 [1 0 0]
 [1 0 0]]
posted @ 2024-02-28 20:26  华小电  阅读(369)  评论(0编辑  收藏  举报