Python 为什么我的cross_val_score()准确率很高,但我的测试准确率很低?

Python 为什么我的cross_val_score()准确率很高,但我的测试准确率很低?,python,machine-learning,keras,scikit-learn,cross-validation,Python,Machine Learning,Keras,Scikit Learn,Cross Validation,在使用KerasWrapper时,我获得了非常高的训练精度:95%以上 X_train, X_test, y_train, y_test = train_test_split(train_data, train_labels, shuffle=True, test_size=0.3, random_state=42) estimator = KerasClassifier(build_fn=build_model(130, 130, 20000), epochs=2, batch_size=1

在使用KerasWrapper时,我获得了非常高的训练精度:95%以上

X_train, X_test, y_train, y_test = train_test_split(train_data, train_labels, shuffle=True, test_size=0.3, random_state=42)

estimator = KerasClassifier(build_fn=build_model(130, 130, 20000), epochs=2, batch_size=128, verbose=1)
folds = KFold(n_splits=3, shuffle=True, random_state=128)
results = cross_val_score(estimator=estimator, X=X_train, y=y_train, cv=folds)
然而,我的预测准确率并不高。这是一个典型的过度装修吗

prediction = cross_val_predict(estimator=estimator, X=X_test, y=y_test, cv=folds)

metrics.accuracy_score(y_test_converted, prediction)
# accuracy is 0.03%
如何提高测试精度?谢谢

这是一个典型的过度装修吗

prediction = cross_val_predict(estimator=estimator, X=X_test, y=y_test, cv=folds)

metrics.accuracy_score(y_test_converted, prediction)
# accuracy is 0.03%
这是而不是——只是你的过程是错误的

cross\u val\u predict
不适用于测试数据,正如您在这里所做的那样。精确度低可能是因为您尝试在测试数据集的每个折叠中重新训练模型,这比训练数据集小得多

正确的程序是-用训练数据拟合估计器,获得测试集的预测,然后计算测试精度,即:

estimator.fit(X_train, y_train)
y_pred = estimator.predict(X_test)
metrics.accuracy_score(y_test, y_pred)

哦,谢谢你。那么,在这种情况下,如何使用KFold分割数据?@AnanSrivastava您不使用
KFold
分割测试集-您只需使用整个测试数据
X_test
来获得预测,然后获得准确性,如答案所示。您可以继续使用
KFold
作为培训数据,就像您所做的那样。如何使用包装器的EarlyStoping?“我的估计器”中没有回调参数,因为它是一个keraswrapper。@AnanSrivastava请不要将注释用于不相关的后续问题-非常欢迎您打开一个新问题,详细介绍您的问题(免费!)。相关问题:我的Kford如何在model.fit()中使用,因为我刚刚经过X_火车和y_火车?