Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用sklearn的GridSearchCV设置自己的回归分数?_Python_Scikit Learn_Regression_Scoring_Gridsearchcv - Fatal编程技术网

Python 如何使用sklearn的GridSearchCV设置自己的回归分数?

Python 如何使用sklearn的GridSearchCV设置自己的回归分数?,python,scikit-learn,regression,scoring,gridsearchcv,Python,Scikit Learn,Regression,Scoring,Gridsearchcv,我曾经使用GridSearchCV(…scoring=“accurity”…)作为分类模型。现在我将使用GridSearchCV作为回归模型,并使用自己的误差函数设置评分 示例代码: def rmse(predict, actual): predict = np.array(predict) actual = np.array(actual) distance = predict - actual square_distance = distance ** 2

我曾经使用GridSearchCV(…scoring=“accurity”…)作为分类模型。现在我将使用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(scoring=“accurity”)->best\u estimaror…best


回归->GridSearchCV(scroing=rmse_分数)->最佳估计数…最差

从技术上讲,这是一种损失,越低越好。您可以在以下位置启用该选项:

越大越好:布尔值,默认值=真分数函数是否为 分数函数(默认值),意味着高是好的,或者是损失函数, 意思是低是好的。在后一种情况下,记分器对象将 签名翻转分数函数的结果

您还需要将输入顺序从
rmse(预测,实际)
更改为
rmse(实际,预测)
,因为这是GridSearchCV传递它们的顺序。最后的得分手是这样的:

def rmse(actual, predict):

    ...
    ...
    return score

rmse_score = make_scorer(rmse, greater_is_better = False)

谢谢你的回复!然而,在这种情况下,当GridSearchCV.best_score_u@willPark是时,我得到了负分。只需反转该符号即可获得实际损失值。没有什么不同。它就是这样设计的,一个逻辑可以处理两种类型的值(分数和损失)。