Python: 进行one-hot编码

在机器学习中,one-hot编码是对分类特征进行预处理的常用手段。本篇博客讲解了如何利用sklearn来进行one-hot编码。

举一个简单的例子:

>> from sklearn.preprocessing import OneHotEncoder
>>> enc = OneHotEncoder()
>>> enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]])  
OneHotEncoder(categorical_features='all', dtype=<... 'numpy.float64'>,
       handle_unknown='error', n_values='auto', sparse=True)
>>> enc.n_values_
array([2, 3, 4])
>>> enc.feature_indices_
array([0, 2, 5, 9])
>>> enc.transform([[0, 1, 1]]).toarray()
array([[ 1.,  0.,  0.,  1.,  0.,  0.,  1.,  0.,  0.]])

首先确认一下输入样本[[0, 0, 3], [1, 1, 0], [0, 2, 1],[1, 0, 2]],

这个输入样本表示该input共有四个样本,三个特征,也就是三列。这里我们观察可以发现对于第一个feature,对应第一列,它的取值有0,1两个属性值,第二列有0,1,2三个值,第三个有0,1,2,3四个取值。那么这里的enc.n_values_就是每个属性列不同属性值的个数,所以输出可以看到分别是2,3,4。而enc.feature_indices_是对enc.n_values_的一个累加。

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

这一句目标是将[0, 1, 1]这个样本转化为基于上面四个输入的one-hot编码。那么可以得到:

第一个属性值0,对应第一列:0->10

第二个属性值1,对应第二列:1->010

第三个属性值1,对应第三列:1->0100

所以[0, 1, 1]对应以上输入的one-hot编码为

[1,0,0,1,0,0,1,0,0]。

 

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值