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中定义的版本进行了比较。哪一个是正确的?为什么他们在这个例子中使用转置?
谢谢,
答案 0 :(得分:2)
解压缩错误不是来自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
将变量转换为观察值,反之亦然。