我的代码是这样的:
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.
“我该怎么办?”
答案 0 :(得分:1)
在您的预测步骤中,您正在传递一维形状(1,64)的1D数组,正如我从sklearn数字数据集文档中所看到的那样。 在预测之前重塑输入数据。在下面使用:
print('Prediction:',clf.predict(np.reshape(digits.data[-1], (1,-1)))