python - 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_
,收缩率与平均训练误差,最小值处于不同的值
解决方案
您不应该绘制平均训练误差,而是平均测试误差。选择最佳参数值的方式GridSearchCV
是基于交叉验证期间保留数据的误差,而不是训练数据。
如果您使用平均测试误差绘制此图,您确实应该看到返回的参数值将达到最小值grid.best_params_
。
推荐阅读
- javascript - Angular 8 中已弃用的 MediaQueryList.addListener() 事件的替换
- python - 如何从数据框中创建字符串索引而不是数字?
- mysql - 无法使用 mysql 3 joins 查询获取完整数据
- oracle - oracle- 加入 2 个共有 2 个 ID 的表
- java - 当手机锁定在某些设备(如 oppo、一加设备)中时,绑定服务会在 1 或 2 分钟后停止
- html - 怎么把文字放在图片右边的里面
- postgresql - 如何为 postgres 配置休眠隔离级别
- php - 更新查询使 Codeigniter PHP 中 MySQL 的记录为空
- python - 将上下文和令牌用例组合到通用 ABC 中
- r - 根据字符串排列过滤行