使用scikit进行SVM训练时输入形状错误

时间:2014-01-26 10:53:15

标签: python machine-learning svm scikit-learn

我对scikit和ML有点新意。我试图训练一个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)

功能是一个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 个答案:

答案 0 :(得分:9)

哪一行代码抛出错误?是lin_clf.fit(features,u)吗?

根据LinearSVC的documentationfit(X,y)的参数是

  

X:{array-like,sparse matrix},shape = [n_samples,n_features]

     

训练矢量,其中样本数和n_features中的n_samples是特征数。

     

y:array-like,shape = [n_samples]

     

相对于X的目标向量

但是,代码中的u是python set。它应该是一个长度为72900的numpy数组。