我正在使用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
中标识的最佳参数?
答案 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_
中。
至于为什么更改第一行后结果没有变化,我猜想它恰好是相同的最佳参数:或者有多个最佳参数。