scikit-learn交叉验证,负值与均方误差

时间:2014-01-29 22:18:07

标签: python regression scikit-learn cross-validation

当我将以下代码与大小为({952,144)的数据矩阵X和大小为(952)的输出向量y一起使用时,mean_squared_error度量标准返回负值,这是意外的。你有什么想法吗?

from sklearn.svm import SVR
from sklearn import cross_validation as CV

reg = SVR(C=1., epsilon=0.1, kernel='rbf')
scores = CV.cross_val_score(reg, X, y, cv=10, scoring='mean_squared_error')

scores中的所有值都是负数。

3 个答案:

答案 0 :(得分:43)

试图关闭它,所以我提供了David和larsmans在评论部分雄辩描述的答案:

是的,这应该发生。实际的MSE只是您获得的数字的正面版本。

统一评分API总是最大化分数,因此需要最小化的分数被否定才能使统一评分API正常工作。因此,如果得分应该被最小化并且如果它是应该最大化的得分则保持为正,则返回的得分被否定。

sklearn GridSearchCV with Pipeline中也对此进行了描述。

答案 1 :(得分:1)

您可以通过将评分方法更改为“ neg_mean_squared_error”来解决此问题,如下所示:

onClick={() => { window.open('LINK','_blank')}}

答案 2 :(得分:1)

要查看可用的评分键,请使用:

import sklearn
print(sklearn.metrics.SCORERS.keys())

您可以使用 'r2' or 'neg_mean_squared_error'。根据您的要求,有很多选择。