scikit中的GridSearchCV如何学习选择k折的最佳参数

时间:2019-03-04 12:39:19

标签: python machine-learning scikit-learn

我正在运行使用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_时,收缩率与平均火车误差的最小值就不同了

1 个答案:

答案 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 返回的参数值将达到最小值。