机器学习之离散型特征处理--独热码(one_hot_encoding)
2017-09-20 11:20
936 查看
原文地址:http://www.cnblogs.com/daguankele/p/6595470.html
近期由于课题需要使用one-hot编码,于是上网查找资料,发现下文是比较容易理解的一篇文章,转载过来以供参考。
1、什么是独热码
独热码,在英文文献中称做 one-hot code, 直观来说就是有多少个状态就有多少比特,而且只有一个比特为1,其他全为0的一种码制,更加详细参加one_hot code(维基百科)。在机器学习中对于离散型的分类型的数据,需要对其进行数字化比如说性别这一属性,只能有男性或者女性或者其他这三种值,如何对这三个值进行数字化表达?一种简单的方式就是男性为0,女性为1,其他为2,这样做有什么问题?
使用上面简单的序列对分类值进行表示后,进行模型训练时可能会产生一个问题就是特征的因为数字值得不同影响模型的训练效果,在模型训练的过程中不同的值使得同一特征在样本中的权重可能发生变化,假如直接编码成1000,是不是比编码成1对模型的的影响更大。为了解决上述的问题,使训练过程中不受到因为分类值表示的问题对模型产生的负面影响,引入独热码对分类型的特征进行独热码编码。
2、编码过程
假如只有一个特征是离散值:
{sex:{male, female,other}}
该特征总共有3个不同的分类值,此时需要3个bit位表示该特征是什么值,对应bit位为1的位置对应原来的特征的值(一般情况下可以将原始的特征的取值进行排序,以便于后期使用),此时得到独热码为{100}男性 ,{010}女性,{001}其他
假如多个特征需要独热码编码,那么久按照上面的方法依次将每个特征的独热码拼接起来:
{sex:{male, female,other}}
{grade:{一年级, 二年级,三年级, 四年级}}
此时对于输入为{sex:male; grade: 四年级}进行独热编码,可以首先将sex按照上面的进行编码得到{100},然后按照grade进行编码为{0001},那么两者连接起来得到最后的独热码{1000001};
3、独热码的函数库
使用python的话scikit_learn中就封装了现成的编码函数,以下为代码示例:
近期由于课题需要使用one-hot编码,于是上网查找资料,发现下文是比较容易理解的一篇文章,转载过来以供参考。
1、什么是独热码
独热码,在英文文献中称做 one-hot code, 直观来说就是有多少个状态就有多少比特,而且只有一个比特为1,其他全为0的一种码制,更加详细参加one_hot code(维基百科)。在机器学习中对于离散型的分类型的数据,需要对其进行数字化比如说性别这一属性,只能有男性或者女性或者其他这三种值,如何对这三个值进行数字化表达?一种简单的方式就是男性为0,女性为1,其他为2,这样做有什么问题?
使用上面简单的序列对分类值进行表示后,进行模型训练时可能会产生一个问题就是特征的因为数字值得不同影响模型的训练效果,在模型训练的过程中不同的值使得同一特征在样本中的权重可能发生变化,假如直接编码成1000,是不是比编码成1对模型的的影响更大。为了解决上述的问题,使训练过程中不受到因为分类值表示的问题对模型产生的负面影响,引入独热码对分类型的特征进行独热码编码。
2、编码过程
假如只有一个特征是离散值:
{sex:{male, female,other}}
该特征总共有3个不同的分类值,此时需要3个bit位表示该特征是什么值,对应bit位为1的位置对应原来的特征的值(一般情况下可以将原始的特征的取值进行排序,以便于后期使用),此时得到独热码为{100}男性 ,{010}女性,{001}其他
假如多个特征需要独热码编码,那么久按照上面的方法依次将每个特征的独热码拼接起来:
{sex:{male, female,other}}
{grade:{一年级, 二年级,三年级, 四年级}}
此时对于输入为{sex:male; grade: 四年级}进行独热编码,可以首先将sex按照上面的进行编码得到{100},然后按照grade进行编码为{0001},那么两者连接起来得到最后的独热码{1000001};
3、独热码的函数库
使用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.]])
相关文章推荐
- 机器学习之离散型特征的处理-one hot encoder
- 处理离散型特征和连续型特征共存的情况 归一化 论述了对离散特征进行one-hot编码的意义
- Spark MLlib特征处理:OneHotEncoder OneHot编码 ---原理及实战
- Spark MLlib特征处理:OneHotEncoder OneHot编码 ---原理及实战
- 机器学习实战-数据探索(异常值处理)
- 模式识别 - 处理多演示样例学习(MIL)特征(matlab)
- 基于sklearn 的one hot encoding
- Label Encoding vs One Hot Encoding
- 机器学习实战之决策树(2)---选择最好的特征来划分数据集
- 机器学习之单变量线性回归(Linear Regression with One Variable)
- 机器学习基础 维基翻译 保序回归 随机森林 Pipeline处理 及简单的sklearn例子
- 机器学习中,有哪些特征选择的工程方法?
- deepin linux系统 图像处理及机器学习开发环境配置方法
- 机器学习中样本不平衡处理办法
- 机器学习之特征工程-特征选择
- 机器学习笔记:为什么要对数据进行归一化处理?
- tensorflow学习笔记--tf.one_hot
- Verilog中状态机编码方式的选择:二进制编码(Binary)、格雷码(Gray-code)编码、独热码(One-hot)编码
- 机器学习实战——第七章:处理非均衡分类问题
- 机器学习之数据预处理