与许多分类器的验证准确性相比,训练集的准确性很低。这正常吗?

时间:2019-11-22 18:39:55

标签: python machine-learning scikit-learn training-data

我认为在拟合数据并预测训练集之后,您应该获得接近100%的准确度。我的意思是这样。该算法基于该数据集进行学习。但是当我这样做时:

classifier.fit(X_train, y_train)

pred = classifier.predict(X_test)

print(accuracy_score(y_test, pred))

>>> 0.810126582278481

很好。但是,如果我这样做:

pred = classifier.predict(X_train)

print(accuracy_score(y_train, pred))

>>> 0.6677316293929713

这不是谬论吗?还是我做错了什么...?这适用于RandomForestClassifier,MLPClassifier和SVC。

1 个答案:

答案 0 :(得分:1)

This答案很好地说明了此行为。您有一个正则化项(或“ penality”参数)C,其默认值为1;这会防止过度拟合并解释低精度。尝试通过执行以下操作来增加参数C的值:

classifier = svm.SVC(C=200000)
classifier.fit(X_train, y_train)
pred = classifier.predict(X_train)
print(accuracy_score(y_train, pred))