Неверная ошибка формы ввода для наборов цифр sklearn - PullRequest
0 голосов
/ 14 мая 2018
import sklearn
import matplotlib.pyplot as plt

from sklearn import datasets
from sklearn import svm

digits = datasets.load_digits()

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

x = digits.data[:-10]
y = digits.data[:-10]

clf.fit(x,y)

print ("prediction:",clf.predict(digits.data[-1]))

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

Я получаю ошибку как

Traceback (most recent call last):
  File "python", line 14, in <module>
ValueError: bad input shape (1787, 64)

Я не уверен, какой и как должна быть форма массива? !!

Может кто-нибудь помочь здесь!спасибо

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Предложение Арьи Маккарти об использовании digits.target в качестве y было правильным. Следовательно, объявление digits.data в качестве переменных объекта x и digits.target в качестве целевых переменных y является правильным. Пожалуйста, попробуйте ваш код, который я изменил следующим образом:

import sklearn
import matplotlib.pyplot as plt

from sklearn import datasets
from sklearn import svm

digits = datasets.load_digits()

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

x = digits.data
y = digits.target

clf.fit(x,y)
print ("prediction:",clf.predict(digits.data[-1].reshape(1, -1)))
plt.imshow(digits.images[-1],cmap = plt.cm.gray_r, interpolation ="nearest")
plt.show()

Следующее было результатом моего запуска кода

enter image description here

0 голосов
/ 14 мая 2018

Вы должны использовать digits.target как y, а не digits.data. SVM принимает только прогнозную переменную 1D, которая намекает на то, что вы передаете ей неправильное значение. target - это значение (0..9), которое изображает изображение 8x8 в x.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...