如何使用 GridSearchCV 确定的最优参数

Posted

技术标签:

【中文标题】如何使用 GridSearchCV 确定的最优参数【英文标题】:How to use optimal parameters identified GridSearchCV 【发布时间】:2019-08-30 02:32:33 【问题描述】:

我正在使用GridSearchCV来识别最优参数但我不确定如何实际使用最优参数,即在下面的代码中,在第三行中,我的结果在更改第一行后没有改变(例如,如果我更改参数空间,或者用精度替换召回等)

cv = GridSearchCV(pipeline, parameters, cv=len(range(2014,2019)), scoring='recall', refit=True)
cv.fit(X,y)
y_pred = cross_val_predict(cv, X, y, cv=len(range(2014,2019)))

有没有办法确保,无论何时我调用cv.predictGridSearchCV 中确定的任何最佳参数实际上也会被使用?

【问题讨论】:

不知道为什么你在第三行使用cross_val_predict,而不是预期的cv.predict... 【参考方案1】:

从文档here 中,它说:

predict(x) 在找到最佳参数的估计器上调用 predict。

基本上在拟合之后,调用 predict 使用最优估计器。如果你想仔细检查你的参数,你可以在拟合后看到最好的参数存储在类属性best_params_中。

至于为什么你的结果在改变第一行后没有改变,我猜它是巧合地得到相同的最佳参数:或者有多个最佳参数。

【讨论】:

啊,我明白了,谢谢,我会用一堆不同的参数仔细检查。【参考方案2】:

GridSearchCV 默认情况下已经做了你想做的事,除非你设置了refit=False。如GridSearchCVdocumentation所述:

refit : 布尔值或字符串,默认=True 使用在整个数据集上找到的最佳参数重新拟合估计器。

对于多指标评估,这需要是一个字符串,表示记分器用于找到最后重新拟合估计器的最佳参数。

重新调整的估算器在best_estimator_ 属性中可用,并且允许在此GridSearchCV 实例上直接使用predict

对于多指标评估,best_index_best_score_best_params_ 属性只有在设置了 refit 时才可用,并且所有这些属性都将由这个特定的得分者确定。

查看评分参数以了解有关多指标评估的更多信息。

因此,每当您致电 cv.predict 时,经过改装的最佳估算器都会做出预测。

在您的情况下,结果是相同的,可能是因为最佳估算者在所有指标上得分最高。

【讨论】:

我明白了,这是有道理的。那可能是,我将测试一些额外的指标。谢谢

以上是关于如何使用 GridSearchCV 确定的最优参数的主要内容,如果未能解决你的问题,请参考以下文章

如何确定 GridSearchCV 中每个评分指标的最佳参数和最佳分数

GridSearchCV

sklearn学习8-----GridSearchCV(自动调参)

KNN算法网格搜索最优参数

如何从 GridsearchCV 获取 feature_importances_

gridsearchCV - 每个参数组合的随机数据