问题的由来

在很多机器学习任务中,特征并不总是连续值,而有可能是分类值。

例如,考虑以下三个特征:

["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 Chrom"]表示为[1,2,1]

但是,即使转化为数字表示之后,上述数据也不能直接用在我们的分类器中。因为,分类器往往默认数据是连续的,并且是有序的。但是,按照我们上述的表示,数组并不是有序的,而是随机分配的。

独热编码

为了解决上述问题,其中一种可能的解决方法是采用独热编码(One-Hot Encoding)

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

例如上面的"性别"特征,有2个可能的分类:male,female。那么就可以用2位编码来表示:10,01,每次只有1个位激活

“所属区域”,有3个可能的分类:即Europe,US,ASia。那么就用3位编码来表示:100,010,001,每次只有1个位激活。

“使用浏览器”,有4个可能的分类:即Firefox,Chrome,Safari,IE,那么就用4位编码来表示:1000,0100,0010,0001,每次只有1个位激活。

例如:

["male","Asia","Safari"],通过独热编码就成为:[1,0,0,0,1,0,0,1,0]

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

这样做的好处主要是:
1.解决了分类器不好处理属性数据的问题

2.在一定程度上也起到了扩充特征的作用

举例

from sklearn import preprocessing
enc=preprocessing.OneHotEncoder()
enc.fit([[0,0,3],[1,1,0],[0,2,1],[1,0,2]])
enc.transfrom([[0,1,3]]).toarray()

输出结果:

array([1, 0,0,1,0,0,0,0,1])

处理离散型特征和连续型特征并存的情况,如何做归一化

例如:拿到获取的原始特征,必须对每一个特征分别进行归一化,比如,特征A的取值范围是[-1000,1000],特征B的取值范围是[-1,1]

如果使用logistic回归,w1*x1+w2*x2,因为x1的取值太大了,所以x2基本起不了作用。所以必须进行特征的归一化,每个特征都单独进行归一化。

连续特征归一化的常用方法:
1.线性缩放到[-1,1]

2.放缩到均值为0,方差为1

离散特征的处理方法:
对于离散的特征基本都是按照One-Hot编码,该离散特征有多少取值,就用多少维来表示该特征。

为什么使用One-Hot编码来处理离散型特征?

1、使用One-Hot编码,将离散特征的取值扩展到欧式空间,离散特征的某个取值就对应欧式空间的某个点

2、将离散特征通过One-Hot编码映射到欧式空间,是因为,在回归、分类、聚类等机器学习算法中,特征之间距离的计算或相似度的计算是非常重要的,而我们常用的距离和相似度的计算都是在欧式空间的相似度计算,计算余弦相似性,基于的就是欧式空间。

3、将离散特征使用One-Hot编码,确实会让特征之间的距离计算更加合理。但如果特征是离散的,并且不用One-Hot编码就可以很合理的计算出距离,那么就没有必要进行One-Hot编码,比如,该离散特征共有1000个取值,我们分成两组,分别是400和600,两个小组之间的距离有合适的定义,组内的距离也有合适的定义,那就没有必要用One-Hot编码

离散特征进行One-Hot编码后,编码后的特征,其实每一维度的特征可以看作是连续的特征,就可以跟对连续性特征的归一化方法一样,对每一维度进行归一化。比如归一化到[-1,1]或归一化到均值为0,方差为1

有些情况不需要进行特征的归一化:

基于树的方法不需要进行特征的归一化,例如随机森林,baggin和boosting等,基于参数的模型或基于距离的模型的,都需要进行特征的归一化。

转载于:https://www.cnblogs.com/zhibei/p/9578203.html

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

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

    问题由来 在很多机器学习任务中,特征并不总是连续值,而有可能是分类值. 例如,考虑一下的三个特征: ["male", "female"] ["from ...

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

    1.前言 在机器学习算法中,我们经常会遇到分类特征,例如:人的性别有男女,祖国有中国,美国,法国等. 这些特征值并不是连续的,而是离散的,无序的.通常我们需要对其进行特征数字化. 那什么是特征数字化呢 ...

  3. Python数据分析数据预处理特征值独热编码

    [小白从小学Python.C.Java] [Python-计算机等级考试二级] [Python-数据分析] Python数据分析 数据预处理 特征值独热编码 独热编码,是一种将分类变量转换为若干二进制 ...

  4. 【sklearn】数据预处理之独热编码(含两种实现方式+代码理解)

    最近学习机器学习,接触到独热编码相关内容,参考了一些资料,加上自己的思考,做出了如下总结: 一.什么是独热编码 独热编码,即One-Hot编码,又称一位有效编码,其方法是使用N位状态寄存器来对N个状态 ...

  5. 数据预处理之独热编码(OneHotEncoder)

    前言 ---------------------------------------- 在机器学习算法中,我们经常会遇到分类特征,例如:人的性别有男女,祖国有中国,美国,法国等. 这些特征值并不是连续 ...

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

    前言 ---------------------------------------- 在机器学习算法中,我们经常会遇到分类特征,例如:人的性别有男女,祖国有中国,美国,法国等. 这些特征值并不是连续 ...

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

    一. 什么是独热编码? ---------------------------------------- 在机器学习算法中,我们经常会遇到分类特征,例如:人的性别有男女,祖国有中国,美国,法国等. 这 ...

  8. 深度学习工作笔记003---数据预处理:独热编码(One-Hot Encoding)

    JAVA技术交流QQ群:170933152 问题由来 在很多机器学习任务中,特征并不总是连续值,而有可能是分类值. 例如,考虑一下的三个特征: ["male", "fem ...

  9. 机器学习类别/标称(categorical)数据处理:独热编码(One Hot Encoding)

    机器学习类别/标称(categorical)数据处理:独热编码(One Hot Encoding) 序号编码:序号编码通常用于处理类别间具有大小关系的数据 可以通过导入sklearn.preproce ...

最新文章

  1. osgEarth3.0 加载天地图
  2. ERROR Cannot determine the location of the VS Common Tools Folder
  3. ASP.NET Core Filter如何支持依赖注入
  4. git之you can‘t overwrite the remote branch问题解决
  5. 前端学习(1668):前端系列实战课程之限制范围拖拽思路
  6. linux 安装mysql5.7.12_Linux系统上安装mysql5.7.12
  7. LeetCode 103. 二叉树的锯齿形层次遍历(Binary Tree Zigzag Level Order Traversal)
  8. Linux 2.6.39-rc3的一个插曲
  9. ios实例开发精品文章推荐(8.13)
  10. 绝地求生信号服务器崩溃,绝地求生奔溃怎么办 吃鸡游戏崩溃解决方法
  11. jni调用dll方法报UnsatisfiedLinkError
  12. (孔乙己茴香豆的的“茴”字有几种写法)三栏布局两边固定中间自适应
  13. FBreader问题记录及多端同步心得开篇
  14. 解决eclipse在安装时工作空间出错问题的有效方法
  15. 【Android 系统开发】CyanogenMod 13.0 源码下载 编译 ROM 制作 ( 手机平台 : 小米4 | 编译平台 : Ubuntu 14.04 LTS 虚拟机)
  16. linux自动登录drcom,Ubuntu用drcom客户端登陆
  17. 概率抽奖常用两种方式
  18. CSS3 画的哆啦A梦
  19. 机器学习算法应用中常用技巧-1
  20. 亚马逊Facebook头条布局社交电商的焦虑

热门文章

  1. 光纤跳线接口的种类及适用范围
  2. linux常用命令1
  3. freebsd 编译核心
  4. Java架构-薪水增长多少,新机会才值得考虑?
  5. 为tomcat6批量生成安全证书
  6. withCredentials--相同主域跨域解决方法
  7. 打开WORD2016提示 您正在试图打开带有宏的 。。。。 解决办法
  8. 如何用java语法解析接口返回的json串?
  9. 英国推6.5亿英镑网络安全战略 强化安全屏障
  10. Xubunbtu远程桌面的tab键