我需要为ANN找到最好的超参数,然后在最好的模型上运行预测。我用KerasRegressor
。我发现了相互矛盾的例子和建议。请帮助我了解正确的顺序,以及何时使用哪些参数。
- 我将我的数据分成Train测试和数据集
- 我在Train上使用
GridSearchCV
寻找最佳超参数数据集GridSearchCV.fit(X_Train, Y_Train)
- 我采取
GridSearchCV.best_estimator_
并在测试的cross_val_score
中使用它数据集,即cross_val_score(model.best_estimator_, X_Test, Y_Test , scoring='r2')
- 我不确定我是否需要做这一步?理论上,它应该显示与GridSearchCV对这个best_estimator_相似的r2分数,不是吗??
- 我使用
model.best_estimator_.predict( X_Test, Y_Test)
测试数据来预测结果。例如,我传递best_estimator_从GridSearchCV
到运行实际的预测.- 这是正确的?*我需要适合吗?在做预测之前再次对列车数据进行
model.best_estimator_
?或者它保留GridSearchCV
期间发现的所有权重?我是否需要保存权重以便能够在以后重用?
- 这是正确的?*我需要适合吗?在做预测之前再次对列车数据进行
通常当你在训练集上使用GridSearchCV
时,你会得到一个包含最佳训练模型和最佳参数的对象。
gs = GridSearchCV.fit(X_train, y_train)
这在运行gs.best_params_
时也很明显,它将在交叉验证后打印出模型的最佳参数。现在,您可以通过运行gs.predict(X_test, y_test)
直接对测试集进行预测,它将使用最佳选择的模型对测试集进行预测。
对于问题3,您不需要再次使用cross_val_score
,因为这是一个辅助函数,允许您对数据集执行交叉验证,并返回数据分割的每个fold
的分数。
对于问题4,我相信这个答案很能说明问题:https://stats.stackexchange.com/a/26535