【问题标题】:How does GridSearchCV in scikit learn pick the best parameters for k foldscikit learn中的GridSearchCV如何为k折挑选最佳参数
【发布时间】:2019-07-25 18:42:15
【问题描述】:

我正在使用scikit's GridSearchCV. 运行留一个交叉验证模型运行后,我绘制了平均训练误差(这是我的 k 折叠的平均值)但是当我查看此图时,它并没有给我分类器的best_param_ 属性的最小值。

是因为GridSearchCV 不决定折叠的平均值,而是单独决定折叠的平均值吗?

文档说:

best_params_ : dict 参数设置,在保留数据上给出了最好的结果。

我的代码:

grid = GridSearchCV(estimator= LinearDiscriminantAnalysis(),param_grid=parameters, cv=loo, 
                     return_train_score=True, n_jobs=-1)
grid.fit(Xr, yr)   
print('Best score for LDA:', 1-grid.best_score_) 
print('Best parameters:', grid.best_estimator_.shrinkage) 

假设我得到的最佳收缩率是 0.1,当我绘制 grid.cv_results_ 时,收缩率与平均训练误差,最小值处于不同的值

【问题讨论】:

  • 请提供一些example code!我相信您已经回答了您自己的问题,但除非我们知道您是如何实施 GridSearchCV,否则无法确定。
  • 我已经更新了问题!

标签: python machine-learning scikit-learn


【解决方案1】:

您不应该绘制平均训练误差,而是平均测试误差GridSearchCV 选择最佳参数值的方式是基于交叉验证期间保留数据的错误,而不是训练数据。

如果您使用平均测试误差绘制此图,您确实应该看到grid.best_params_ 返回的参数值将达到最小值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-09
    • 2020-04-25
    • 2019-01-31
    • 2014-09-16
    • 2021-11-04
    • 2017-11-23
    • 2015-04-06
    • 2013-10-01
    相关资源
    最近更新 更多