当我将以下代码与大小为({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
中的所有值都是负数。
答案 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'
。根据您的要求,有很多选择。