One-Hot Encoding(独热编码)
前几天查了一些与独热编码相关的资料后,发现看不进去...看不太懂,今天又查了一下,然后写了写代码,通过自己写例子加上别人的解释后,从结果上观察,明白了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(独热编码)的更多相关文章
- One-hot encoding 独热编码
http://blog.sina.com.cn/s/blog_5252f6ca0102uy47.html
- 【转】数据预处理之独热编码(One-Hot Encoding)
原文链接:http://blog.csdn.net/dulingtingzi/article/details/51374487 问题由来 在很多机器学习任务中,特征并不总是连续值,而有可能是分类值. ...
- 机器学习实战:数据预处理之独热编码(One-Hot Encoding)
问题由来 在很多机器学习任务中,特征并不总是连续值,而有可能是分类值. 例如,考虑一下的三个特征: ["male", "female"] ["from ...
- 数据预处理:独热编码(One-Hot Encoding)
python机器学习-sklearn挖掘乳腺癌细胞( 博主亲自录制) 网易云观看地址 https://study.163.com/course/introduction.htm?courseId=10 ...
- 数据预处理:独热编码(One-Hot Encoding)和 LabelEncoder标签编码
一.问题由来 在很多机器学习任务中,特征并不总是连续值,而有可能是分类值. 离散特征的编码分为两种情况: 1.离散特征的取值之间没有大小的意义,比如color:[red,blue],那么就使用one- ...
- 数据预处理之独热编码(One-Hot Encoding)(转载)
问题由来 在很多机器学习任务中,特征并不总是连续值,而有可能是分类值. 例如,考虑一下的三个特征: ["male", "female"] ["from ...
- 机器学习 数据预处理之独热编码(One-Hot Encoding)
问题由来 在很多机器学习任务中,特征并不总是连续值,而有可能是分类值. 例如,考虑一下的三个特征: ["male", "female"] ["from ...
- 数据预处理之独热编码(One-Hot Encoding)
问题的由来 在很多机器学习任务中,特征并不总是连续值,而有可能是分类值. 例如,考虑以下三个特征: ["male","female"] ["from ...
- 虚拟变量和独热编码的区别(Difference of Dummy Variable & One Hot Encoding)
在<定量变量和定性变量的转换(Transform of Quantitative & Qualitative Variables)>一文中,我们可以看到虚拟变量(Dummy Var ...
随机推荐
- mui 进度条 隐藏
官方提供的 mui(contanier).progressbar().hide(); 并未起作用,DOM是js动态添加的,结果无法隐藏.(越使用,mui 的坑越多,陆续记录中...) 后使用下面的方法 ...
- Spring Boot高频面试题:Spring Boot执行原理
之前一篇文章Spring Boot快速入门文章中,我们已经体会到Spring Boot的神器,不再像之前Spring那样需要繁琐的XML,甚至几秒钟就能搭建出Spring的项目骨架.接下来我们简单分析 ...
- List 重载添加-add,删除-remove方法,以及获取子集方法
package seday12; import java.util.ArrayList;import java.util.List; /*** @author xingsir* List重载了一对ad ...
- CSS - div居中在屏幕中(水平居中 + 垂直居中)
方法一代码 <div> <h1>404 Not Found.</h1> </div> <style> div { text-align: c ...
- 查看Oracle的表中有哪些索引(用user_indexes和user_ind_columns)
用user_indexes和user_ind_columns系统表查看已经存在的索引 对于系统中已经存在的索引我们可以通过以下的两个系统视图(user_indexes和user_ind_columns ...
- ENS中文文档系列之三 [ ENS常见问题 ]
原文地址:https://ensuser.com/docs/frequently-asked-questions.html更多最新信息,请前往 ENS 中文服务站点:ENSUser 关于 ENS 注册 ...
- Qt: 释放窗口资源
1. 对于使用指针,使用new创建的窗口,当然可以使用delete显示的释放其占用的资源: Widget *w = new Widget(); delete w; 2. 对于使用指针,使用new创 ...
- TensorFlow 模型的保存与载入
参考学习博客: # https://www.cnblogs.com/felixwang2/p/9190692.html 一.模型保存 # https://www.cnblogs.com/felixwa ...
- 操作Document文档
利用客户端操作Document文档数据 1.创建一个文档(创建数据的过程,向表中去添加数据) 请求方式:Post 请求地址:es所在IP:9200/索引库/Type/文档ID(可给可不给,代表唯一标识 ...
- Android学习02
今天学了ScrollView&HorizontalScrollView和WebView 一.ScrollView(垂直滚动),HorizontalScrollView(水平滚动) Scroll ...