前几天查了一些与独热编码相关的资料后,发现看不进去...看不太懂,今天又查了一下,然后写了写代码,通过自己写例子加上别人的解释后,从结果上观察,明白了sklearn中独热编码做了什么事。

  下面举个例子解释一下:

  code:

from sklearn.preprocessing import OneHotEncoder
import numpy as np train = np.array([
[0, 1, 2],
[1, 1, 0],
[2, 0, 1],
[3, 1, 1]
])
one_hot = OneHotEncoder()
one_hot.fit(train)
print(one_hot.transform([[1, 0, 1]]).toarray())

  Output:

  这里的output输出的是什么?怎么与例子中的矩阵关系起来?例子给的是一组4行3列的矩阵,从列来看它的特点是第1列4个数都不同,第2列只有二进制数(0,1),第3列有3个不同的数。

  这样的数值矩阵对应的文本类表单可以是这样的:

姓名 性别 成绩
鸣人:0 男:1 32:2
佐助:1 男:1 99:0
小樱:2 女:0 87:1
佐井:3 男:1 87:1

  于是

one_hot.transform([[1, 0, 1]]).toarray()

  编码的结果这样理解:

  第1列:矩阵第一列有4个不同的数,用4位表示,1出现在[0,1,2,3]中的下标为1的位置上,所以对应的独热码为:[0,1,0,0]。

  第2列:矩阵第二列有2个不同的数,用2位表示,0出现在[0,1]中的下标为0的位置上,所以对应的独热码为:[1,0]。

  第3列:矩阵第三列有3个不同的数,用3位表示,1出现在[0,1,2]的下标为1的位置上,所以对应的独热码为:[0,1,0]。

  可以用例子证明上面的结论:

  Input:[[1,0,2]]

  Output:

  Input:[[3,1,1]

  Output:

  假如要进行编码的数据没有出现在对应列中将会出现错误:

  Input:[[4,1,1]]

  Output:

  等等,还可以自行写其他例子验证一下。

  现在我们就知道了独热编码做了什么了,它先统计每列中每个数据出现的次数并去除重复的,然后在没有重复数据的数据集上对不同列的数据进行相应的编码。按这样的规则编码的结果就可以只有0,1出现了。

  参考资料:

    1.https://blog.csdn.net/google19890102/article/details/44039761

    2.https://blog.csdn.net/pipisorry/article/details/61193868

    3.https://blog.csdn.net/counsellor/article/details/60145426

One-Hot Encoding(独热编码)的更多相关文章

  1. One-hot encoding 独热编码

    http://blog.sina.com.cn/s/blog_5252f6ca0102uy47.html

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

    原文链接:http://blog.csdn.net/dulingtingzi/article/details/51374487 问题由来 在很多机器学习任务中,特征并不总是连续值,而有可能是分类值. ...

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

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

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

    python机器学习-sklearn挖掘乳腺癌细胞( 博主亲自录制) 网易云观看地址 https://study.163.com/course/introduction.htm?courseId=10 ...

  5. 数据预处理:独热编码(One-Hot Encoding)和 LabelEncoder标签编码

    一.问题由来 在很多机器学习任务中,特征并不总是连续值,而有可能是分类值. 离散特征的编码分为两种情况: 1.离散特征的取值之间没有大小的意义,比如color:[red,blue],那么就使用one- ...

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

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

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

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

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

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

  9. 虚拟变量和独热编码的区别(Difference of Dummy Variable & One Hot Encoding)

    在<定量变量和定性变量的转换(Transform of Quantitative & Qualitative Variables)>一文中,我们可以看到虚拟变量(Dummy Var ...

随机推荐

  1. Re(正则表达式)库入门

    一.正则表达式的概念 正则表达式 "一行胜千言" regular expression regex RE 是用来简洁表达一组字符串的表达式. 'PN' 'PYN' 'PYTN' & ...

  2. 会话技术之Cookie

    在无状态的客户端(未登录)下,张三想买手机然后把手机加入购物车,服务器发出添加成功的响应,然后把手机加入ServletContext域里,然后张三想在逛逛别的, 再无状态的客户端(未登录)下,李四想买 ...

  3. 树莓派raspbian安装matchbox-keyboard虚拟键盘

    环境:raspbian-stretch(2018-06-27) 树莓派:3代B型 官网安装地址:http://ozzmaker.com/virtual-keyboard-for-the-raspber ...

  4. 浅谈hover用法

    在前端页面制作中,我们时常要用到移动显示.隐藏的动态效果,我们一般采用js来实现此效果.不过在大部分情况下,我们也可以使用hover来实现此动态效果. 在此,我谈一谈我对hover的用法,请看以下代码 ...

  5. MYSQL客户端管理工具

      双击安装navicact客户端管理工具: 双击启动脚本,并指定管理工具的navicat.exe文件 最后打开

  6. Linux - 常用GUI软件

    1. gdebi -- 可以代替Ubuntu software安装软件 2. System monitor -- 监控流量 3. uget -- 下载软件 4. Okular -- pdf reade ...

  7. Vue入门学习总结一:Vue定义

    Vue的功能是为视图提供响应的数据绑定及视图组件,Vue是数据驱动式的,不直接修改DOM而是直接操作数据实现对界面进行修改. 首先我们需要在script中定义一个Vue实例,定义方法如下: var v ...

  8. spring 参数校验

    1.了解下资源文件加载 MessageSource   需要国际化处理时使用这个类 (在需要处理国际化的地方使用messageSource.getMessage(this.getResponseCod ...

  9. (2)Linux Java环境变量安装

    install default JRE/JDK Installing Java with apt-get is easy. First, update the package index: sudo ...

  10. java.io包中的四个抽象类

    IO所谓的四大抽象类就是:  InputStream.OutputStream.Reader.Writer