如何使用GridSearchCV、cross_val_score和模型



我需要为ANN找到最好的超参数,然后在最好的模型上运行预测。我用KerasRegressor。我发现了相互矛盾的例子和建议。请帮助我了解正确的顺序,以及何时使用哪些参数。

  1. 我将我的数据分成Train测试和数据集
  2. 我在Train上使用GridSearchCV寻找最佳超参数数据集GridSearchCV.fit(X_Train, Y_Train)
  3. 我采取GridSearchCV.best_estimator_并在测试cross_val_score中使用它数据集,即cross_val_score(model.best_estimator_, X_Test, Y_Test , scoring='r2')
    • 我不确定我是否需要做这一步?理论上,它应该显示与GridSearchCV对这个best_estimator_相似的r2分数,不是吗??
  4. 我使用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

最新更新