python中的数组形状不正确

时间:2016-04-01 18:10:15

标签: python-2.7 numpy machine-learning scikit-learn svm

我正在尝试为我在网上找到的数据集实现SVM。features_test,features_train,labels_test,labels_train是元组的python列表。我在下面将它转换为numpy数组。但clf.fit给了我以下错误。

File "ebola.py", line 47, in <module>
clf.fit(features_train_numpy,labels_train_numpy)
File "/usr/lib64/python2.7/site-packages/sklearn/svm/base.py", line 151, in fit
y = self._validate_targets(y)
File "/usr/lib64/python2.7/site-packages/sklearn/svm/base.py", line 514, in _validate_targets
y_ = column_or_1d(y, warn=True)
File "/usr/lib64/python2.7/site-packages/sklearn/utils/validation.py", line 551, in column_or_1d
raise ValueError("bad input shape {0}".format(shape))
ValueError: bad input shape (2923, 9)

代码如下

features_train_numpy = np.asarray(features_train)
labels_train_numpy= np.asarray(labels_train)
features_test_numpy = np.asarray(features_test)
labels_test_numpy= np.asarray(labels_test)
from sklearn.svm import SVC
temp = 100
clf=SVC(C=temp,kernel="rbf")
clf.fit(features_train_numpy,labels_train_numpy)`

1 个答案:

答案 0 :(得分:0)

即使从错误本身也很容易注意到你的标签矩阵是二维的,而它应该是1D向量。它应该包含在我的位置 - 我的例子的标签。在您的情况下,看起来每个样本都有9个标签,sklearn SVM不支持。