机器学习入门之机器学习实战:数据预处理之独热编码(One-Hot Encoding)
小标 2018-10-15 来源 : 阅读 2895 评论 0

摘要:本文主要向大家介绍机器学习入门之机器学习实战:数据预处理之独热编码(One-Hot Encoding)了,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助。

本文主要向大家介绍机器学习入门之机器学习实战:数据预处理之独热编码(One-Hot Encoding)了,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助。

问题由来

在很多机器学习任务中,特征并不总是连续值,而有可能是分类值。
例如,考虑一下的三个特征:

  ["male", "female"]
  ["from Europe", "from US", "from Asia"]
  ["uses Firefox", "uses Chrome", "uses Safari", "uses 
  Internet Explorer"]
如果将上述特征用数字表示,效率会高很多。例如:

  ["male", "from US", "uses Internet Explorer"] 表示为[0, 1, 
  3]
  ["female", "from Asia", "uses Chrome"]表示为[1, 2, 1]
但是,即使转化为数字表示后,上述数据也不能直接用在我们的分类器中。因为,分类器往往默认数据数据是连续的,并且是有序的。但是,按照我们上述的表示,数字并不是有序的,而是随机分配的。
独热编码
为了解决上述问题,其中一种可能的解决方法是采用独热编码(One-Hot Encoding)。
独热编码即 One-Hot 
编码,又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候,其中只有一位有效。
例如:

  自然状态码为:000,001,010,011,100,101
  独热编码为:000001,000010,000100,001000,010000,100000
可以这样理解,对于每一个特征,如果它有m个可能值,那么经过独热编码后,就变成了m个二元特征。并且,这些特征互斥,每次只有一个激活。因此,数据会变成稀疏的。
这样做的好处主要有:

  
  解决了分类器不好处理属性数据的问题
  
  在一定程度上也起到了扩充特征的作用
举例
我们基于python和Scikit-learn写一个简单的例子:

  from sklearn import preprocessing
  enc = preprocessing.OneHotEncoder()
  enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]])
  enc.transform([[0, 1, 3]]).toarray()
输出结果:

  array([[ 1.,  0.,  0.,  1.,  0.,  0.,  
  0.,  0.,  1.]]),布布扣,bubuko.com

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标人工智能机器学习频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 1
看完这篇文章有何感觉?已经有1人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved