首页 文章

如何使用来自sklearn的GridSearchCV为回归设置自己的得分?

提问于
浏览
0

我曾经使用GridSearchCV(...评分=“准确度”...)来分类模型 . 现在我将使用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 ...最好

回归 - > GridSearchCV(scroing = rmse_score) - > best_estimator ......最差

1 回答

  • 1

    这在技术上是一种损失,其中越低越好 . 您可以在make_scorer中打开该选项:

    greater_is_better:boolean,default = True score_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)
    

相关问题