使用 mnist 数据集的 SVM 是否 100% 准确?
Is SVM with the mnist dataset 100% accurate?
所以我使用 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%
可能会过拟合,因为你使用的预测数据都在你的训练数据中,尝试在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
。
所以我使用 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%
可能会过拟合,因为你使用的预测数据都在你的训练数据中,尝试在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
。