独热编码

转载自:http://blog.clzg.cn/blog-1579109-884831.html

 

 

首先,引出例子:

已知三个feature,三个feature分别取值如下:

feature1=[“male”, “female”]

feature2=[“from Europe”, “from US”, “from Asia”]

feature3=[“uses Firefox”, “uses Chrome”, “uses Safari”, “uses Internet Explorer”]

如果做普通数据处理,那么我们就按0,1,2,3进行编号就行了。例如feature1=[0,1],feature2=[0,1,2],feature3=[0,1,2,3]。

那么,如果某个样本为[“male”,“from Asia”, “uses Chrome”],它就可以表示为[0,2,1]。

以上为普通编码方式。

 

独热编码(One-hot)换了一种方式编码,先看看百科定义的:

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

例如对六个状态进行编码:

自然顺序码为 000,001,010,011,100,101

独热编码则是 000001,000010,000100,001000,010000,100000

通过以上可以看到,独热编码每一个码的总的位数取决于状态的种类数,每一个码里的“1”的位置,就代表了哪个状态生效。

还是回到我们最开始的例子,那么我们将它换成独热编码后,应该是:

feature1=[01,10]

feature2=[001,010,100]

feature3=[0001,0010,0100,1000]

所以,对于前边样本[“male”,“from Asia”, “uses Chrome”],经过独热编码后,它应该为:

[01,00, 000,000,100, 0000,0010,0000,0000]

注:上边用空格,以便看的更清晰。


 

以上的独热编码可以写成简写形式: [1,0, 0,0,1, 0,1,0,0]

 

最后,摘抄下独热编码的好处:

 

由于分类器往往默认数据是连续的,并且是有序的,但是在很多机器学习任务中,存在很多离散(分类)特征,因而将特征值转化成数字时,往往也是不连续的, One-Hot 编码解决了这个问题。

并且,经过独热编码后,特征变成了稀疏的了。

这有两个好处,一是解决了分类器不好处理属性数据的问题,二是在一定程度上也起到了扩充特征的作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值