pat中python非零返回原因_python – 为什么sklearn线性回归对通过(0,0)的直线给出非零截距?...

给定y = 3x行的一些数据点:

from sklearn import datasets, linear_model

X = [[1],[2],[3],[4],[5]]

y = [[3],[6],[9],[12],[15]]

regr = linear_model.LinearRegression()

regr.fit(X,y)

然后:

regr.predict([[6], [7], [8], [9], [10]])

按预期给出:

array([[ 18.],

[ 21.],

[ 24.],

[ 27.],

[ 30.]])

正如预期的那样,regr.coef_是3.但为什么regr.intercept_不是0?

regr.intercept_

array([ -3.55271368e-15])

解决方法:

这是一个浮点问题 – 数字非常接近0.您可以使用numpy的内置测试套件来检查

>>> from numpy.testing import assert_almost_equal

>>> assert_almost_equal(regr.intercept_, 0)

要回答为什么数字不为零,你可以去下面的兔子洞:

> sklearn使用scipy.linalg.lstsq来拟合线性回归,

> scipy.linalg.lstsq使用来自LAPACK的gelss来找到Ax = b的最小二乘解,

> gelss使用A的奇异值分解来解决.

我猜想gelss是引入一点点错误的地方.

标签:python,scikit-learn,linear-regression

来源: https://codeday.me/bug/20190829/1761720.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值