【问题标题】:feature hashing in sklearnsklearn 中的特征哈希
【发布时间】:2014-09-03 20:22:39
【问题描述】:

我在 scikit-learn 中使用 FeatureHasher。

谁能解释为什么我在稀疏矩阵中得到 4 个非零数据,而不是在以下之后的 2 个:

>>> f = FeatureHasher(input_type='string')
>>> g = f.transform(('as','bs'))
<2x1048576 sparse matrix of type '<type 'numpy.float64'>'
with 4 stored elements in Compressed Sparse Row format>
>>> g.data
array([-1.,  1., -1., -1.])
>>> g.nonzero()
(array([0, 0, 1, 1], dtype=int32), array([341263, 354738,  98813, 341263], dtype=int32))

【问题讨论】:

    标签: python machine-learning scikit-learn


    【解决方案1】:

    似乎正在等待一系列序列。外部序列用于观察,内部序列用于特征。根据您的输入,内部序列是字符串的字符。

    观察 0:'a' -> 354738,'s' -> 341263

    观察 1:'b' -> 98813,'s' -> 341263

    试试这个:

    g = f.transform([['as'],['bs']])
    

    输出:

    >>> g.nonzero()
    (array([0, 1], dtype=int32), array([494108, 335425], dtype=int32))
    

    【讨论】:

    • 谢谢。这在文档中是否明确?我不这么认为,但想知道。
    • 不确定文档。我感觉更像是 sklearn 的约定。大多数变换函数,除了行轴上的二维网格观察和列轴上的特征。如果你只给它一个一维序列,它会尝试通过将字符串视为特征序列来找到另一个维度。
    • 是的,这是在 transform 文档字符串中:“raw_X : iterable over iterable over raw features, length = n_samples”。
    猜你喜欢
    • 1970-01-01
    • 2014-04-08
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 2018-06-08
    • 2018-09-25
    • 2018-12-25
    相关资源
    最近更新 更多