Python最小二乘回归

Python最小二乘回归,python,regression,Python,Regression,为什么这个代码不起作用?我正在尝试做多元回归。 以下形式的四个方程式: Ax + By + c = d A + 2B + C = 0.2 etc. A = np.array([[ 0., 1, 1.], [ 1., 2, 1.], [ 2., 3, 1.], [ 3., 4, 1.]]) y = np.array([-1, 0.2, 0.9, 2.1]) m, c = np.linalg.lstsq(A, y)[0] print m, c 我做错了什么?我假设您

为什么这个代码不起作用?我正在尝试做多元回归。 以下形式的四个方程式:

Ax + By + c = d

A + 2B + C = 0.2 etc.

A = np.array([[ 0.,  1, 1.],
   [ 1.,  2, 1.],
   [ 2.,  3, 1.],
   [ 3.,  4, 1.]])

y = np.array([-1, 0.2, 0.9, 2.1])
m, c = np.linalg.lstsq(A, y)[0]
print m, c

我做错了什么?

我假设您从
lstsq
中取了
m,c=np.linalg.lstsq(A,y)[0]

在本例中,他们正在解决带有一个变量和常数的线性回归问题。因此,该问题的np.linalg.lstsq(A,y)返回四元素元组
(数组([1.,-0.95])、数组([0.05])、2、数组([4.10003045,1.09075677])
(第一个元素–解,第二个–残差,第三个–系数矩阵秩,最后一个元素–系数矩阵的奇异值)。 因此,
np.linalg.lstsq(A,y)[0]
(在本例中)返回包含两个元素的数组,这两个元素可以按原样解包:
m,c=np.linalg.lstsq(A,y)[0]
m=1,c=-0.95
)。

您正在使用两个变量和常数求解回归。因此,
np.linalg.lstsq(A,y)[0]
将返回包含三个元素的数组,如果您希望按照示例中的方式对其进行解包,可以采用以下方式:

x1, x2, c = np.linalg.lstsq(A, y)[0]
但更方便的方法是(在我看来):


有什么不起作用?错误输出不良?让我们看看!你自己试试看,找出答案。我给了密码。谢谢你的回答!!
x, residuals, rank, s = np.linalg.lstsq(A, y) #lstsq func always return four-element tuple

print 'solution is %s.' % str(x)
print 'matrix A rank is %d.' % rank
print 'residuals are %s.' % str(residuals)
print 'singular values of A are %s.' % str(s)

print 'first variable is %f.' % x[0]
print 'second variable is %f.' % x[1]
print 'constant is %f.' % x[2]