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

ahm*_*ari 40 python regression scikit-learn cross-validation

当我使用以下代码与X大小(952,144)的数据矩阵和y大小(952)的输出向量时,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')
Run Code Online (Sandbox Code Playgroud)

scores然后所有的值都是负数.

AN6*_*6U5 47

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

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

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

使用Pipeline的sklearn GridSearchCV中也描述了这一点.

  • 谢谢!有一个问题,如果我得到 [-44, -33, -22] 作为 mse 分数,只需将它们视为 mse =44, 33, 22 ? (2认同)