繁体   English   中英

Scikit学习DictVectorizer到分类器

[英]Scikit-learn DictVectorizer to Classifier

我正在尝试加载字典,然后执行分类。 但是,我得到了错误:

  File "train_classifier.py", line 49, in <module>
    clf.fit(page_vecs.data[:-1],page_vecs.target[:-1])
  File "/usr/local/lib/python3.4/site-packages/scipy/sparse/base.py", line 505, in __getattr__
    raise AttributeError(attr + " not found")
AttributeError: target not found

如何加载目标? 这是我的代码:

vec = DictVectorizer()
page_vecs = vec.fit_transform(feature_dict_list)
clf = svm.SVC(gamma=0.001, C=100)
clf.fit(page_vecs.data[:-1],page_vecs.target[:-1])
print(clf.predict(page_vecs[-1]))

查看DictVectorizer类,特别是其fit_transform方法:

返回:
Xa:{数组,稀疏矩阵}

特征向量; 总是2-d。

因此它返回一个二维数组。

在您的代码中,此行:

page_vecs = vec.fit_transform(feature_dict_list)

将导致page_vecs成为2d数组。 2d numpy数组没有target属性,您可以在此处尝试使用它:

clf.fit(page_vecs.data [: - 1],page_vecs.target [: - 1])

这就是为什么您得到错误。 实际上,您甚至都不应该使用.data ,而应直接使用numpy数组。 如果要忽略最后一行,请执行以下操作:

page_vecs[:-1, :]

您的标签(或目标)与DictVectorizer类无关,该类仅对样本进行矢量化处理,而不对标签进行矢量化处理。 标签应该有单独的向量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM