天天看点

python sklearn metrics,在Python中sklearn.metrics.mean_squared_error越大越好(否定)?

通常,mean_squared_error越小越好.

当我使用sklearn指标包时,它在文档页面中显示:http://scikit-learn.org/stable/modules/model_evaluation.html

All scorer objects follow the convention that higher return values are

better than lower return values. Thus metrics which measure the

distance between the model and the data, like

metrics.mean_squared_error, are available as neg_mean_squared_error

which return the negated value of the metric.

python sklearn metrics,在Python中sklearn.metrics.mean_squared_error越大越好(否定)?

但是,如果我去:http://scikit-learn.org/stable/modules/generated/sklearn.metrics.mean_squared_error.html#sklearn.metrics.mean_squared_error

它说它是均方误差回归损失,并没有说它被否定了.

如果我查看源代码并检查那里的例子:https://github.com/scikit-learn/scikit-learn/blob/a24c8b46/sklearn/metrics/regression.py#L183它正在进行正常的均方误差,即越小越好.

所以我想知道我是否错过了关于文档中否定部分的任何内容.谢谢!

实际的函数“mean_squared_error”没有关于负面部分的任何内容.但是当您尝试’neg_mean_squared_error’时实现的功能将返回分数的否定版本.

请查看源代码,了解其在the source code中的定义:

neg_mean_squared_error_scorer = make_scorer(mean_squared_error,

greater_is_better=False)

观察param greater_is_better如何设置为False.

现在所有这些得分/损失都用于其他各种事情,如cross_val_score,cross_val_predict,GridSearchCV等.例如,在’accuracy_score’或’f1_score’的情况下,得分越高越好,但是如果出现损失(错误),则降低得分更好.要以相同的方式处理它们,它返回负数.

因此,该实用程序用于以相同方式处理分数和损失,而无需更改特定丢失或分数的源代码.

所以,你没有错过任何东西.您只需要处理要使用损失函数的场景.如果您只想计算mean_squared_error,则只能使用mean_squared_error.但是,如果您想使用它来调整模型,或者使用scikit中的实用程序进行cross_validate,请使用’neg_mean_squared_error’.

也许添加一些细节,我会解释更多.