Является ли SVM с набором данных mnist точным на 100%? - PullRequest
1 голос
/ 06 апреля 2019

Поэтому я написал программу, использующую модуль sklearn svm.SVC для изучения набора данных mnist, по какой-то причине всякий раз, когда я вычисляю точность, равную 100%.Это кажется слишком хорошим, чтобы быть правдой, это ожидается?

from sklearn import datasets
from sklearn import svm

digits = datasets.load_digits()

clf = svm.SVC(gamma=0.001, C=100)
print(len(digits.data))
train_with_first = 50

x, y = digits.data[:-train_with_first], digits.target[:-train_with_first]
clf.fit(x,y)

print(digits.data[4])

num_corr = 0
num_total = 0

for pred in range(train_with_first-1):    
    prediction = clf.predict(digits.data[pred].reshape(1,-1))
    target = digits.target[pred]
    print(int(target))
    print(int(prediction))

    if int(target) == int(prediction):
        num_corr += 1 
    num_total += 1

print("Accuracy was: ", (float(num_corr)/num_total)*100)

Я ожидаю, что точность будет меньше 100%

1 Ответ

2 голосов
/ 06 апреля 2019

Это может быть слишком подходящим, потому что все данные прогноза, которые вы используете, находятся в ваших данных обучения, попробуйте использовать train_test_split в sklearn, чтобы разделить набор обучения и тестирования.

Или вы можете изменить строку 18 с

for pred in range(train_with_first-1):

до

for pred in range(train_with_first,len(digits.data)):

но рекомендуется использовать train_test_split.

...