如何使用sklearn的GridSearchCV设置自己的评分进行回归



我曾经使用GridSearchCV(…scoring="accury"…(作为分类模型。现在我将使用GridSearchCV作为回归模型,并使用自己的误差函数设置评分。

示例代码:

def rmse(predict, actual):
predict = np.array(predict)
actual = np.array(actual)
distance = predict - actual
square_distance = distance ** 2
mean_square_distance = square_distance.mean()
score = np.sqrt(mean_square_distance)
return score
rmse_score = make_scorer(rmse)
gsSVR = GridSearchCV(...scoring=rmse_score...)
gsSVR.fit(X_train,Y_train)
SVR_best = gsSVR.best_estimator_
print(gsSVR.best_score_)

然而,我发现它以这种方式返回错误分数最高时的参数集。结果,我得到了最差的参数集和分数。在这种情况下,如何获得最佳估计量和分数?

摘要:

分类->GridSearchCV(评分="准确度"(->best_estimaror。。。最佳

regression->GridSearchCV(scring=rmse_score(->best_estimator。。。最差

从技术上讲,这是一个损失,越低越好。您可以在make_scorer:中打开该选项

greater_is_better:布尔值,default=Truescore_func是否为分数函数(默认值(,表示高即好,或损失函数,意思是低就是好。在后一种情况下,记分对象将符号翻转score_func的结果。

您还需要将输入的顺序从rmse(predict, actual)更改为rmse(actual, predict),因为这是GridSearchCV传递它们的顺序。所以最终得分手会是这样的:

def rmse(actual, predict):
...
...
return score
rmse_score = make_scorer(rmse, greater_is_better = False)

最新更新