如何使用最佳参数识别GridSearchCV

时间:2019-04-08 21:23:03

标签: python machine-learning scikit-learn cross-validation grid-search

我正在使用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)))

有没有一种方法可以确保我每次致电GridSearchCV时,实际上也会使用cv.predict中标识的最佳参数?

2 个答案:

答案 0 :(得分:3)

除非您设置GridSearchCV,否则

refit=False在默认情况下已经可以满足您的要求。如GridSearchCV documentation所述:

  

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

     

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

     

best_estimator_属性上提供了经过调整的估算器,并且直接在此predict实例上使用GridSearchCV允许使用

     

同样对于多指标评估,属性best_index_best_score_best_params_仅在设置了重新设置且将通过该特定得分手确定的情况下才可用。

     

请参阅评分参数,以了解有关多指标评估的更多信息。

因此,每当您致电cv.predict时,最好的估算器(已进行过调整)就可以做出预测。

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

答案 1 :(得分:1)

从文档here中说:

  

predict(x)用最合适的参数在估算器上调用预测。

本质上,在拟合之后,调用预测使用最佳估计量。如果要仔细检查参数,可以在拟合后看到最佳参数存储在类属性best_params_中。

至于为什么更改第一行后结果没有变化,我猜想它恰好是相同的最佳参数:或者有多个最佳参数。