首页 > 解决方案 > scikit learn中的GridSearchCV如何为k折挑选最佳参数

问题描述

我正在使用模型运行后留下一个交叉验证,我绘制了平均训练误差(这是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_,收缩率与平均训练误差,最小值处于不同的值

标签: pythonmachine-learningscikit-learn

解决方案


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

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


推荐阅读