我在使用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.dataarray([-1., 1., -1., -1.])>>> g.nonzero()(array([0, 0, 1, 1], dtype=int32), array([341263, 354738, 98813, 341263], dtype=int32))
回答:
看起来它期望的是一个序列的序列。外层序列用于表示观测值,内层序列用于表示特征。你的输入中,内层序列是字符串的字符。
观测值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))