Scikit-learn 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 class,具体是它的 fit_transform 方法:
Returns:
Xa : {array, sparse matrix}
Feature vectors; always 2-d.
所以它 returns 一个二维数组。
在您的代码中,这一行:
page_vecs = vec.fit_transform(feature_dict_list)
会导致page_vecs
成为这样的二维数组。 2d numpy 数组没有 target
属性,您尝试在此处使用:
clf.fit(page_vecs.data[:-1],page_vecs.target[:-1])
这就是您收到错误的原因。事实上,你甚至不应该做 .data
,你应该直接使用 numpy 数组。如果您想忽略最后一行,请执行:
page_vecs[:-1, :]
您的标签(或目标)与 DictVectorizer
class 无关,它只矢量化您的样本,而不是您的标签。你应该有一个单独的标签向量。
我正在尝试加载字典,然后进行分类。但是,我收到错误:
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 class,具体是它的 fit_transform 方法:
Returns:
Xa : {array, sparse matrix}Feature vectors; always 2-d.
所以它 returns 一个二维数组。
在您的代码中,这一行:
page_vecs = vec.fit_transform(feature_dict_list)
会导致page_vecs
成为这样的二维数组。 2d numpy 数组没有 target
属性,您尝试在此处使用:
clf.fit(page_vecs.data[:-1],page_vecs.target[:-1])
这就是您收到错误的原因。事实上,你甚至不应该做 .data
,你应该直接使用 numpy 数组。如果您想忽略最后一行,请执行:
page_vecs[:-1, :]
您的标签(或目标)与 DictVectorizer
class 无关,它只矢量化您的样本,而不是您的标签。你应该有一个单独的标签向量。