How to fix the error in the code, I'm using python 3.7, macOS high sierra
installed libraries are: sklearn
matplotlib
numpy
.
code:
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn import svm
import numpy
digits=datasets.load_digits()
'''
print(digits.data)
print(digits.target)
print(digits.images[0])
'''
clf=svm.SVC(gamma=0.001, C=1.0)
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()
Error:
Traceback (most recent call last):
File "/Users/harmanthind/Documents/Python/scikit learn
liberary/pehla.py", line 21, in <module>
print('prediction:',clf.predict(digits.data[-1]))
File"/Library/Frameworks/
Python.framework/Versions/3.7/lib/python3.7/site-
packages/sklearn/svm/base.py", line 548, in predict
y = super(BaseSVC, self).predict(X)
File
"/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/sklearn/svm/base.py", line 308, in predict
X = self._validate_for_predict(X)
File
"/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/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
"/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/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. 6. 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.
Have you indented correctly ?
I have runned your code on my machine (Windows 8.1) with proper indentation and it worked fine.
Indented code:
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn import svm
import numpy
digits=datasets.load_digits()
'''
print(digits.data)
print(digits.target)
print(digits.images[0])
'''
clf=svm.SVC(gamma=0.001, C=1.0)
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()
Furthermore, if it doesn't work, then try changing the kernel/interpreter. Try Python 3.6.x kernel/interpreter.
p.s: I have used Python 3.6.0 on Thonny IDE to run test this code and it worked fine on my machine.