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]