使用scikit进行SVM训练时出现了“输入形状错误”的错误提示。

3

我是一个对scikit和机器学习有些陌生的新手。我正在尝试训练一个一对多分类的SVM分类器。我正在使用以下代码。

g=list()
for i in range(0,120):
    g.append(1)
for i in range(120,240):
    g.append(2)

u=set(g)
numclasses=len(u)

lin_clf = svm.LinearSVC()
lin_clf.fit(features,u)

Features是一个72900*120的数组。我从另一个Python代码中获取特征并在此处调用它。它会抛出以下警告和错误。

/usr/lib/python2.7/dist-packages/scipy/misc/pilutil.py:279: 
DeprecationWarning: fromstring() is deprecated. Please call frombytes() instead.
image = Image.fromstring(mode, shape, strdata)

错误

ValueError: bad input shape ()

如果您需要特征提取的代码,请在评论中留言。谢谢。
1个回答

9
哪行代码报错了?是 lin_clf.fit(features,u) 吗?
根据 LinearSVC 的文档fit(X,y) 的参数为:
X:{array-like, sparse matrix},形状为 [n_samples, n_features]。训练向量,其中 n_samples 是样本数量,n_features 是特征数量。
y:array-like,形状为 [n_samples]。与 X 相对应的目标向量。
然而,在你的代码中,u 是一个 Python 的 set。它应该是长度为 72900 的 numpy 数组。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接