Tensorflow学习: one-hot编码
来源:互联网 发布:椰子油 知乎 编辑:程序博客网 时间:2024/05/19 13:14
问题源于Udacity深度学习视频13,14课不解之处。
https://classroom.udacity.com/courses/ud730/lessons/6370362152/concepts/63713510510923
一、One-Hot Encoding
One-Hot编码,又称为一位有效编码,主要是采用位状态寄存器来对个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效。
在实际的机器学习的应用任务中,特征有时候并不总是连续值,有可能是一些分类值,如性别可分为“male”和“female”。在机器学习任务中,对于这样的特征,通常我们需要对其进行特征数字化,如下面的例子:
有如下三个特征属性:
性别:[“male”,”female”]
地区:[“Europe”,”US”,”Asia”]
浏览器:[“Firefox”,”Chrome”,”Safari”,”Internet Explorer”]
对于某一个样本,如[“male”,”US”,”Internet Explorer”],我们需要将这个分类值的特征数字化,最直接的方法,我们可以采用序列化的方式:[0,1,3]。但是这样的特征处理并不能直接放入机器学习算法中。
二、One-Hot Encoding的处理方法
对于上述的问题,性别的属性是二维的,同理,地区是三维的,浏览器则是思维的,这样,我们可以采用One-Hot编码的方式对上述的样本“[“male”,”US”,”Internet Explorer”]”编码,“male”则对应着[1,0],同理“US”对应着[0,1,0],“Internet Explorer”对应着[0,0,0,1]。则完整的特征数字化的结果为:[1,0,0,1,0,0,0,0,1]。这样导致的一个结果就是数据会变得非常的稀疏。
可以这样理解,对于每一个特征,如果它有m个可能值,那么经过独热编码后,就变成了m个二元特征。并且,这些特征互斥,每次只有一个激活。因此,数据会变成稀疏的。
这样做的好处主要有:
解决了分类器不好处理属性数据的问题
一定程度上也起到了扩充特征的作用
三、实际的Python代码
from sklearn import preprocessing enc = preprocessing.OneHotEncoder() enc.fit([[0,0,3],[1,1,0],[0,2,1],[1,0,2]]) array = enc.transform([[0,1,3]]).toarray() print(array)
结果:[[ 1. 0. 0. 1. 0. 0. 0. 0. 1.]]
我们将矩阵排起来看:
[[ 0 0 3];
[ 1 1 0];
[ 0 2 1];
[ 1 0 2]]
矩阵每一列代表一个特征:
第一列只有0或1出现,共两种情况,所以one-hot编码前两维代表第一个特征,也恰好说明了是性别的分类。
第二列有0,1,2出现,三种情况,所以one-hot编码中间三维代表第二个特征,恰好证明了地区所对应的特征。
第三列有0,1,2,3出现,四种情况,所以one-hot编码最后思维代表第三个特征也是最后一个特征,证明了浏览器的对应的特征。
这里也很好的解释了“一定程度上也起到了扩充特征的作用”这句话,其实就是将所有的特征都融入到一个向量里面构成one-hot意义下的特征,一下子变成了9维的向量(个人理解)。
我们进一步墨迹下:
特征列:
[[“male”,”female”,”Europe”,”US”,”Asia”,”Firefox”,”Chrome”,”Safari”,”Internet Explorer”]]
输出结果:
[[ 1. ,0. , 0. , 1., 0. , 0., 0., 0., 1.]]
参考文献链接:
http://www.cnblogs.com/lzh-cnblogs/p/3764749.html
http://blog.csdn.net/google19890102/article/details/44039761
- Tensorflow学习: one-hot编码
- [TensorFlow学习笔记3]构建简单的卷积神经网路&one-hot编码
- one-hot编码
- one-hot编码
- one-hot编码
- 关于One-hot编码
- ONE HOT 编码
- 生成one-hot编码
- 【机器学习】one hot encoding 独热编码
- python sklearn one-hot编码
- one hot encoding/哑编码
- [数据预处理]one-hot编码
- one hot coding -机器学习
- one hot coding -机器学习
- one hot coding -机器学习
- 【机器学习】Sklearn独热编码one hot 编码preprocessing.OneHotEncoder()使用
- One-hot编码:Python sklearn CTR实验
- One-Hot Encoding独热编码
- android5.0日历范围
- TortoiseGit中文语言包安装后操作步骤依然是中文
- ubuntu14.04 安装Matlab R2015b
- ORACLE物化视图入门
- 三角形
- Tensorflow学习: one-hot编码
- 集合第一步:模拟ArrayList底层实现
- python中的数据结构(1):列表(数组)和元組
- 巧妙解决navigationBarTitle不显示问题
- Android setContentView() 详解
- UVA
- 关于大小端的经典问题
- 代理模式-----进行事务的注解
- VNC远程登录centos系统黑屏的解决办法