负R2上的训练数据为线性回归

问题描述:

使用scikit学习,以适应一个维模型,没有截距:负R2上的训练数据为线性回归

lm = sklearn.linear_models.LinearRegression(fit_intercept=False). 
lm.fit(x, y) 

当使用训练数据I得到一个负.score评价得分()。

lm.score(x, y) 

-0.00256 

为什么? R2分数是否将我的无截距模型的方差与截距模型进行比较?

(请注意,这是我用来拟合模型相同的数据。)

+0

[交叉验证此问题]的副本(http://stats.stackexchange.com/questions/12900/when-is-r-squared-negative)。既然你不是合适的拦截,注意第二个答案那里 – lanenok

+0

谢谢,但唯一的约束是不使用拦截。 scikit-learn将我的模型(不带截取)与带或不带拦截的“水平线”进行比较? – LearnOPhile

+0

在R2计算中,将模型与'y'的平均值进行比较,可以将其绘制为水平线。没有任何有关您的数据集和问题性质的信息,很难为您提供帮助。例如,为什么你确定你的拦截是零? – lanenok

首先,检查哪个是你的问题如下评论的链接。 其次,为了获得更好的分数,请在Scikit-learn中使用GridSearchCV函数。该功能可以调整您的模型参数,并找到最佳参数。

GridSearchCV上了解更多,请按照此link

+1

我不明白'GridSearchCV'如何帮助调整普通最小二乘回归中的参数 - 因为调整它们只是解决线性系统的问题! 或者,也许sklearn正在使用一些数值方法,在这个特定情况下“失败”? – LearnOPhile

Wikipedia article on R^2

重要的情况下,其中R 2的定义计算可以产生 负值,这取决于所使用的定义,产生[...]其中 线性回归而不包括截距进行

(强调我的)。