独热编码(one-hot coding)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了独热编码(one-hot coding)相关的知识,希望对你有一定的参考价值。

参考技术A 1 为什么需要独热编码?
    直接上案例,一份数据,特征为["颜色", "尺码", "喜欢度", "类别"],具体数据为[['green','M', 10.1,'class1'], ['red','L', 13.5,'class2'], ['blue','XL', 15.3,'class1']]。
    这几项中,喜欢度直接是数值型,不用管。类别是label,先不说。对于颜色与尺码这两项,应该如何编码?
    先说尺码,尺码的编码形式应该是"M": 1, "L": 2, "XL": 3,直接转换成数字的形式。那么颜色这一项是否可行?直接将颜色字段编码为"green":1, "red": 2, "blue": 3,这样似乎否可行?
    先上结论,这样不行。我们在模型训练的时候,会对特征做什么?无非就是计算距离。那现在计算green,red,blue三个的距离。d(green, red)=2-1=1,d(red, blue)=3-2=1,d(green, blue)= 3-1=2。问题来了,这几个颜色之间的差距,应该是一样的。都是不同的颜色,不应该映射到欧氏空间,距离不等。这就是这种编码的问题所在。颜色这个离散特征之间没有大小的意义,应该使用独热编码。
    那么型号这个字段可以吗?回答是可以的。同样计算距离。d(M,L)=2-1=1,d(L, XL)=3-2=1,d(M,XL)=3-1=2。XL是真的比M大两号的。当离散特征的取值有大小的意义,就应该使用这种数值映射。

2 独热编码现成的包
     现成的包有不少,我就说一个,这个简单,能用就行了。pandas自带了独热编码的方法,get_dummies()。用起来很简单。还是以上边的例子。

3 独热编码的优缺点

以上是关于独热编码(one-hot coding)的主要内容,如果未能解决你的问题,请参考以下文章

独热编码(one-hot)是什么?什么数据类型需要进行独热编码?pandas如何进行独热编码(one-hot)?

独热编码(One-Hot Encoding)和 LabelEncoder标签编码 区别 数据预处理:(机器学习) sklearn

数据预处理:独热编码(One-Hot Encoding)

数据预处理:独热编码(One-Hot Encoding)

数据预处理之独热编码(One-Hot Encoding)

机器学习:数据预处理之独热编码(One-Hot)