所以我写了一个程序,使用sklearnsvm.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%

最佳答案

由于您使用的预测数据全部在训练数据中,因此可能会过拟合,请尝试在sklearn中使用train_test_split拆分训练和测试集。

或者您可以将第18行更改为

for pred in range(train_with_first-1):



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

但建议使用train_test_split

关于python - 具有mnist数据集的SVM是否100%准确?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55545498/

10-13 03:07