我有一个这样的数据框:
import pandas as pd
test = pd.DataFrame({'type': ['a', 'b', 'a', 'c', 'b'], 'model': ['bab', 'ba', 'ba', 'ce', 'bw']})
如何使用sklearn
FeatureHasher
在它上面?
我试过了:
from sklearn.feature_extraction import FeatureHasher
FH = FeatureHasher()
train = FH.transform(test.type)
但它不喜欢它?它似乎想要一个字符串或一个列表,所以我尝试
FH.transform(test.to_dict(orient='list'))
但这也不起作用? 我明白了:
AttributeError: 'str' object has no attribute 'items'
感谢
答案 0 :(得分:7)
初始化FeatureHasher实例时需要指定输入类型:
In [1]:
from sklearn.feature_extraction import FeatureHasher
h = FeatureHasher(n_features=5, input_type='string')
f = h.transform(test.type)
f.toarray()
Out[1]:
array([[ 1., 0., 0., 0., 0.],
[ 0., -1., 0., 0., 0.],
[ 1., 0., 0., 0., 0.],
[ 0., 0., -1., 0., 0.],
[ 0., -1., 0., 0., 0.]])
请注意,根据上面链接的文档,这将假设这些功能的值为1(大胆强调是我的):
input_type:字符串,可选,默认为“dict”
- “dict”(默认值)接受字典(feature_name,value);
- “配对”接受对(feature_name, 值);
- 或“string”接受单个字符串。 feature_name应该是 string,而value应该是一个数字。 在“string”的情况下,a 隐含值。
对feature_name进行哈希查找 适合该功能的列。值的符号可能会被翻转 在输出中(但请参见下面的non_negative)。