scikit-learn 中 OneHotEncoder 解析

在 sklearn 包中,OneHotEncoder 函数非常实用,它可以实现将分类特征的每个元素转化为一个可以用来计算的值。本篇详细讲解该函数的用法,也可以参考官网 sklearn.preprocessing.OneHotEncoder。

该函数在 sklearn.preprocessing 类中,格式为:
下面展示一些 内联代码片

oneHotEncoder(n_values=’auto’,  categorical_features=’all’,  dtype=<class ‘numpy.float64’>,  sparse=True,  handle_unknown=’error’)

为了方便理解,我们先看下面一个例子:
下面展示一些 内联代码片

# -*- coding: utf-8 -*-

from sklearn.preprocessing import  OneHotEncoder

enc = OneHotEncoder()
enc.fit([[0, 0, 3],
         [1, 1, 0],
         [0, 2, 1],
         [1, 0, 2]])

ans = enc.transform([[0, 1, 3]]).toarray()  # 如果不加 toarray() 的话,输出的是稀疏的存储格式,即索引加值的形式,也可以通过参数指定 sparse = False 来达到同样的效果
print(ans) # 输出 [[ 1.  0.  0.  1.  0.  0.  0.  0.  1.]]

下面解释输出结果的意思。对于输入数组,这依旧是把每一行当作一个样本,每一列当作一个特征。
1)我们先来看第一个特征,即第一列 [0,1,0,1],也就是说它有两个取值 0 或者 1,那么 one-hot 就会使用两位来表示这个特征,[1,0] 表示 0, [0,1]表示 1,在上例输出结果中的前两位 [1,0…]也就是表示该特征为 0

2)第二个特征,第二列 [0,1,2,0],它有三种值,那么 one-hot 就会使用三位来表示这个特征,[1,0,0]表示 0, [0,1,0]表示 1,[0,0,1]表示 2,在上例输出结果中的第三位到第五位。 […0,1,0…]也就是表示该特征为 1

3)第三列 [3,0,1,2],它有四种值,那么 one-hot 就会使用四位来表示这个特征,[1,0,0,0]表示 0, [0,1,0,0]表示 1,[0,0,1,0]表示 2,[0,0,0,1]表示 3,在上例输出结果中的最后四位 […0,0,0,1]也就是表示该特征为 3好了

到此相信我们已经很明白它的意思了。值得注意的是,虽然训练样本中的数值仅仅代表类别,但是也必须使用数值格式的数据,如果使用字符串格式的数据会报错。

原网址:https://www.cnblogs.com/zhoukui/p/9159909.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值