我是机器学习scikit-learn
新手。我正在浏览文档并尝试使用一些示例数据进行OneHotEncoder()
。有人可以解释一下encoder.feature_indices_发生了什么以及我如何获得Encoded_Vector的输出作为[[ 0. 0. 1. 0. 1. 0. 0. 0. 1. 1. 0.]]
.任何帮助,不胜感激。谢谢!
>>> from sklearn import preprocessing
>>> encoder = preprocessing.OneHotEncoder()
>>> encoder.fit([[0, 2, 1, 12], [1, 3, 5, 3], [2, 3, 2, 12], [1, 2, 4,3]])
OneHotEncoder(categorical_features='all', dtype=<type 'numpy.float64'>,
handle_unknown='error', n_values='auto', sparse=True)
>>> encoder.n_values_
array([ 3, 4, 6, 13])
>>> encoder.feature_indices_
array([ 0, 3, 7, 13, 26])
>>> vector_encoded = encoder.transform([[2,3,5,3]]).toarray()
>>> print "nEncoded_Vector =",vector_encoded
Encoded_Vector = [[ 0. 0. 1. 0. 1. 0. 0. 0. 1. 1. 0.]]
>>>
到目前为止,我的理解是
输入
0 2 1 12
1 3 5 3
23 2 12
1 2 4 3
这是 4 列/功能和 4 行。每列都有不同数量的唯一实体。如果我运行:
enc.n_values_
它给出: 数组([ 3, 4, 6, 13])
因此,每个功能的类别是:
功能 1 可以取 3 个值:0 1 2
功能 2 可以取 4 个值:0 1 2 3
功能 3 可以取 6 个值:0 1 2 3 4 5
功能 4 可以取 13 个值:0 1 2 3 4 5 6 7 8 9 10 11 12
即使您说您的特征总共可以取 3、4、6 或 13 个值,您提供的数据示例 ( [[0, 2, 1, 12], [1, 3, 5, 3], [2, 3, 2, 12], [1, 2, 4,3]]
) 并未涵盖数据的全部种类。
你的例子基本上是这样说的:
- 功能 1 可以采用 3 个值 (0,1,2)
- 功能 2 可以取 2 个值 (2,3)
- 功能 3 可以取 4 个值 (1,2,4,5)
- 功能 4 可以取 2 个值 (3,12)
这最终总共有 11 个值。因此,OneHotEncoding ( [[ 0. 0. 1. 0. 1. 0. 0. 0. 1. 1. 0.]]
) 的输出有 11 个值,可以分为 4 个部分:
- [0. 0.1.] 是特征 1 的编码
- [0. 1.] 是特征 2 的编码
- [0. 0.0. 1.]是功能 3 的编码
- [1. 0.] 是特征 4 的编码
数组中"1."的位置将告诉您变量的值(尝试在编码之前和编码之后匹配示例)。