как исправить ошибку Python, в описании указан код и ошибка - PullRequest
0 голосов
/ 04 сентября 2018

Как исправить ошибку в коде, я использую python 3.7, macOS high sierra Установленные библиотеки: sklearn matplotlib numpy.

Код:

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()

Ошибка:

  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.

1 Ответ

0 голосов
/ 05 сентября 2018

Правильно ли указан отступ 1003 *?

Я запустил ваш код на моей машине ( Windows 8.1 ) с правильным отступом, и он работал отлично .

Код с отступом:

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()

Кроме того, если это не работает, попробуйте изменить ядро ​​/ интерпретатор. Попробуйте Python 3.6.x ядро ​​/ интерпретатор.

p.s: Я использовал Python 3.6.0 в Thonny IDE для запуска тестирования этого кода, и он отлично работал на моей машине.

...