如何使用 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.predict
,GridSearchCV
中确定的任何最佳参数实际上也会被使用?
【问题讨论】:
不知道为什么你在第三行使用cross_val_predict
,而不是预期的cv.predict
...
【参考方案1】:
从文档here 中,它说:
predict(x)
在找到最佳参数的估计器上调用 predict。
基本上在拟合之后,调用 predict 使用最优估计器。如果你想仔细检查你的参数,你可以在拟合后看到最好的参数存储在类属性best_params_
中。
至于为什么你的结果在改变第一行后没有改变,我猜它是巧合地得到相同的最佳参数:或者有多个最佳参数。
【讨论】:
啊,我明白了,谢谢,我会用一堆不同的参数仔细检查。【参考方案2】:GridSearchCV
默认情况下已经做了你想做的事,除非你设置了refit=False
。如GridSearchCV
documentation所述:
refit : 布尔值或字符串,默认=True 使用在整个数据集上找到的最佳参数重新拟合估计器。
对于多指标评估,这需要是一个字符串,表示记分器用于找到最后重新拟合估计器的最佳参数。
重新调整的估算器在
best_estimator_
属性中可用,并且允许在此GridSearchCV
实例上直接使用predict
。对于多指标评估,
best_index_
、best_score_
和best_params_
属性只有在设置了 refit 时才可用,并且所有这些属性都将由这个特定的得分者确定。查看评分参数以了解有关多指标评估的更多信息。
因此,每当您致电 cv.predict
时,经过改装的最佳估算器都会做出预测。
在您的情况下,结果是相同的,可能是因为最佳估算者在所有指标上得分最高。
【讨论】:
我明白了,这是有道理的。那可能是,我将测试一些额外的指标。谢谢以上是关于如何使用 GridSearchCV 确定的最优参数的主要内容,如果未能解决你的问题,请参考以下文章
如何确定 GridSearchCV 中每个评分指标的最佳参数和最佳分数
sklearn学习8-----GridSearchCV(自动调参)