【问题标题】:ValueError: Expected 2D array, got 1D array instead during svm recognitionValueError:预期的 2D 数组,在 svm 识别期间得到 1D 数组
【发布时间】:2018-12-21 09:40:39
【问题描述】:

我的代码是这样的:

import matplotlib.pyplot as plt

from sklearn import datasets, svm

digits = datasets.load_digits()

clf = svm.SVC(gamma=0.001, C=100)

print(len(digits.data))

X,y = digits.data[:-1] , digits.target[:-1]

clf.fit(X,y)

print('Prediction:',clf.predict(digits.data[-1]))

plt.imshow(digits.images[-1],  cmap=plt.cm.gray_r, interpolation="nearest")

plt.show()

我收到了这个错误:

Traceback (most recent call last):
File "E:\python programs\sklearn\sklearn 2.py", line 14, in <module>
print('Prediction:',clf.predict(digits.data[-1]))
File "C:\Users\Rohan\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\svm\base.py", line 548, in predict
y = super(BaseSVC, self).predict(X)
File   "C:\Users\Rohan\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\svm\base.py", line 308, in predict
X = self._validate_for_predict(X)
File "C:\Users\Rohan\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\svm\base.py", line 439, in _validate_for_predict
X = check_array(X, accept_sparse='csr', dtype=np.float64, order="C")
File "C:\Users\Rohan\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\utils\validation.py", line 441, in check_array
"if it contains a single sample.".format(array))
ValueError: Expected 2D array, got 1D array instead:
array=[ 0.  0. 10. 14.  8.  1.  0.  0.  0.  2. 16. 14.   m6.  1.  0.  0.  0.  0.
 15. 15.  8. 15.  0.  0.  0.  0.  5. 16. 16. 10.  0.  0.  0.  0. 12. 15.
 15. 12.  0.  0.  0.  4. 16.  6.  4. 16.  6.  0.  0.  8. 16. 10.  8. 16.
 8.  0.  0.  1.  8. 12. 14. 12.  1.  0.].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

“我该怎么办?”

【问题讨论】:

  • 试试 print('Prediction:',clf.predict(digits.data[:-1]))
  • 在此类问题中始终打印并提供数组的形状。它们有助于解决问题。

标签: python machine-learning scikit-learn


【解决方案1】:

在您的预测步骤中,您传递了一个形状为 (1,64) 的一维数组,正如我从 sklearn 数字数据集文档中看到的那样。 在预测之前重塑输入数据。在下面使用:

print('Prediction:',clf.predict(np.reshape(digits.data[-1], (1,-1))) 

【讨论】:

  • 文件 "E:\pythonprograms\sklearn\sklearn 2.py",第 15 行,在 print('Prediction:',clf.predict(np.reshape(digits.data[ -1]) ,(-1,1))) TypeError: reshape() missing 1 required positional argument: 'newshape' 现在它给出了上述错误
  • digits.data[-1]后面没有右括号,请复制答案中的代码,如果遇到错误请分享。
猜你喜欢
  • 2018-12-11
  • 2020-03-19
  • 2018-09-16
  • 2021-12-29
  • 1970-01-01
  • 2020-12-18
  • 2020-03-03
  • 2019-06-06
相关资源
最近更新 更多