数据预处理--One Hot Encoding 详解

1. 什么叫独热编码(one-hot encoding)?
独热编码一般是在有监督学习中对数据集进行标注时候使用的,指的是在分类问题中,将存在数据类别的那一类用X表示,不存在的用Y表示,这里的X常常是1, Y常常是0。
举个例子:
比如我们有一个5分类问题,我们有数据(Xi,Yi),其中类别Yi有五种取值(因为是五类分类问题),所以如果Yi为第一类那么其独热编码为:
[1,0,0,0,0] ,第二类那么独热编码为:[0,1,0,0,0] ,也就是说只对存在有该类别的数的位置上进行标记为1,其他皆为0。这个编码方式经常用于多分类问题,特别是损失函数为交叉熵函数的时候。

One Hot Encoding 是将分类变量转换为可以提供给ML算法,以在预测中做得更好的编码形式。

假设我们有以下数据集:
在这里插入图片描述
分类值表示数据集中条目的数值。例如:如果数据集中有另一家公司,则它将被赋予分类值为4.随着唯一条目数量的增加,分类值也会按比例增加。

当然,我们可以利用 sklearn’s LabelEncoder 把分类值转化为数字。

2 . 为什么LabelEncoder标签编码不足以为模型提供训练参数?为什么需要One Hot Encoding ?

标签编码的问题在于它假定分类值越高,类别越好。

对于上面的例子来说:用来分类VW、 Acura、Honda的类别。假设你的模型在内部计算平均值来进行预测,那么我们得到,1 + 3 = 4/2 = 2。这意味着:VW和Honda的平均值是Acura,这样的模型预测会有很多错误,偏差很远。

这就是为什么我们使用一个One Hot Encoding来使类别的“二值化”,并将其作为训练模型的特征。

One HotEncoding独热编码,又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效。

例如:

自然状态码为:111,101,010,011,110,101

独热编码为:000001,000010,000100,001000,010000,100000

可以这样理解,对于每一个特征,如果它有m个可能值,那么经过独热编码后,就变成了m个二元特征。并且,这些特征互斥,每次只有一个激活。因此,数据会变成稀疏的。

开始的数据集用One Hot Encoding 处理后结果如下:

在这里插入图片描述
3 . 参考资料:

https://hackernoon.com/what-is-one-hot-encoding-why-and-when-do-you-have-to-use-it-e3c6186d008f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值