我正在运行使用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_
时,收缩率与平均火车误差的最小值就不同了
答案 0 :(得分:1)
您不应标出平均训练误差,而应标明平均测试误差。 match
选择最佳参数值的方式是基于交叉验证期间保持数据的误差,而不是训练数据。
如果使用均值检验误差进行此图绘制,您确实应该看到 grades <- paste0(rep(LETTERS[c(1:4,6)], each = 3), c("+", "", "-"))[-c( 13)] # keep A+
PollsFiltered$nums <- match(PollsFiltered$grade, rev(grades) ) # F(1) to A+(14)
> head(PollsFiltered)
grade nums
1 B 10
2 C+ 8
3 A+ 14
4 A- 12
5 C+ 8
6 B 10
返回的参数值将达到最小值。