我认为在拟合数据并预测训练集之后,您应该获得接近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。
答案 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))