【问题标题】:Calculate multivariate linear regression with numpy用 numpy 计算多元线性回归
【发布时间】:2014-02-20 03:14:42
【问题描述】:

1 - 使用 A = np.array([x1,x2,x3]) 修复了 How I plot the linear regression 中的错误。

所以我决定增加 x1、x2 和 x3 中的元素数量并继续使用How I plot the linear regression 中的示例,现在我得到了错误 “ValueError:解包的值太多”。 Numpy 不能用这么多数字计算?

>>> x1 = np.array([3,2,2,3,4,5,6,7,8])
>>> x2 = np.array([2,1,4.2,1,1.5,2.3,3,6,9])
>>> x3 = np.array([6,5,8,9,7,0,1,2,1])
>>> y = np.random.random(3)
>>> A = np.array([x1,x2,x3])
>>> m,c = np.linalg.lstsq(A,y)[0]
Traceback (most recent call last):
File "testNumpy.py", line 18, in <module>
  m,c = np.linalg.lstsq(A,y)[0]
ValueError: too many values to unpack

2 - 我还将我的版本与Multiple linear regression with python 中定义的版本进行了比较。哪一个是正确的?为什么他们在这个例子中使用转置?

谢谢,

【问题讨论】:

  • 请发布整个问题。如果您的其他问题被删除,那么您实际上想要实现的目标就没有任何痕迹
  • 错误不是来自 NumPy。 Python 它告诉您np.linalg.lstsq(A,y)[0] 返回的值超过了您期望的两个值 (m, c)。
  • 如果发布的上一个问题的答案解决了该问题中提出的问题,那么您最好接受该答案。随着时间的推移,你会发现如果你不感谢他们或不承认他们的努力,人们对你的帮助就会减少(这也让其他人知道不要浪费时间试图弄清楚发布的答案是否足够)。

标签: python numpy math regression linear-regression


【解决方案1】:

解压缩错误不会来自numpy,它来自您尝试从函数调用中解压缩两个值,当只返回一个时,请注意[0]在线的末尾

>>> x1 = np.array([3,2,2,3,4,5,6,7,8])
>>> x2 = np.array([2,1,4.2,1,1.5,2.3,3,6,9])
>>> x3 = np.array([6,5,8,9,7,0,1,2,1])
>>> y = np.random.random(3)
>>> A = np.array([x1,x2,x3])
>>> print np.linalg.lstsq(A,y)[0]
array([ 0.01789803,  0.01546994,  0.01128087,  0.02851178,  0.02561285,
        0.00984112,  0.01332656,  0.00870569, -0.00064135])

相比
>>> print np.linalg.lstsq(A,y)
(array([ 0.01789803,  0.01546994,  0.01128087,  0.02851178,  0.02561285,
         0.00984112,  0.01332656,  0.00870569, -0.00064135]),
 array([], dtype=float64), 
 3,
 array([ 21.78630954,  12.03873305,   3.8217304 ]))

请参阅numpy docs,第一个数组是变量的系数。我认为这里的混乱是一个变化与观察。您目前有三个观察和九个变量。 A.T将变量转换为观察,反之亦然。

【讨论】:

  • 我不明白输出中的结果是什么。它们是在线性回归中定义的betas(en.wikipedia.org/wiki/Linear_regression)吗?如何从NP.Linalg.lstsq的输出中获得等式Y = MX + C中的“C”。 span>
  • @ xeon123必须添加一个1s span>的列
猜你喜欢
  • 2021-01-19
  • 2020-10-09
  • 1970-01-01
  • 2016-04-19
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 2011-02-17
  • 2018-03-16
相关资源
最近更新 更多