机器倾斜 OneHotCoding in Python



我是机器学习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

2

3 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."的位置将告诉您变量的值(尝试在编码之前和编码之后匹配示例)。

相关内容

  • 没有找到相关文章

最新更新