数据预处理中常见的哑编码/独热编码(One-Hot Encoding)详解(一看就懂)

通常需要处理的数值都是稀疏而又散乱地分布在空间中,然而,我们并不需要存储这些大数值,这时可以用独热编码。

例如:我们需要处理4维向量空间,当给一个特征向量的第n个特征进行编码时,编码器会遍历每个特征向量的第n个特征,然后进行非重复计数。若第n个特征的最大值为K,则就把这个特征转换为只有一个值为1而其他值都是0的K+1维向量。

encoder=OneHotEncoder(sparse=False) 
注:这里sparse是一个布尔值,指定结果是否稀疏。若sparse=True,则每个样本的独热码为一个稀疏矩阵(机器学习中稀疏矩阵的处理方式和Python实现

每个样本(5个特征)经过独热码编码后转化成26个特征(6+5+4+5+6=26)

è¿éåå¾çæè¿°

第一个原始特征最大值为5,因此第一个原始特征取值种类为6种(0,1,2,3,4,5),则原始数据用一个六源元组来编码 
如:0编码为(1,0,0,0,0,0) 
encoder.active_features_给出了激活特征 
(1)第一个原始特征没有出现数值为0,2,4,因此转化后的26个特征中,对应编码的特征未激活(转化后的特征下标为0,2,4) 
(2)第一个原始特征没有出现数值为0,因此转化后的26个特征中,对应编码的特征未激活(转化后的特征下标为6) 
(3)第一个原始特征没有出现数值为0,2,因此转化后的26个特征中,对应编码的特征未激活(转化后的特征下标为11,13) 
(4)第一个原始特征没有出现数值为0,因此转化后的26个特征中,对应编码的特征未激活(转化后的特征下标为15) 
(5)第一个原始特征没有出现数值为0,2,4,因此转化后的26个特征中,对应编码的特征未激活(转化后的特征下标为20,22,24) 
因此激活特征数组为[1 3 5 7 8 9 10 12 14 16 17 18 19 21 23 25] 
注:未激活特征在所有样本上的取值为0

encoder.feature_indices_给出了每个原始特征在转换后特征的起始区间: 
(1)第一个原始特征在转换后特征的区间[0,6) 
(2)第二个原始特征在转换后特征的区间[6,11) 
(1)第三个原始特征在转换后特征的区间[11,15) 
(1)第四个原始特征在转换后特征的区间[15,20) 
(1)第五个原始特征在转换后特征的区间[20,26)

n_values_给出了每个原始属性的取值的种类:6,5,4,5,6 
注:n_values是一个数组,存放每个属性取值的种类,一般为训练数据中该属性取值的最大值加1,因为默认每个属性取值从0开始

样本[1,2,3,4,5]经过独热编码之后的值为[1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1]。这里本该26位编码,但是考虑到剔除未激活特征,只给出了激活特征,因此这里只有16位编码。

 

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值