Python 使用linalg.lstsq的numpy多方向回归

Python 使用linalg.lstsq的numpy多方向回归,python,numpy,linear-regression,Python,Numpy,Linear Regression,我试图求解方程组中的m1,m2,m3,m4,这样: y=(m1*x1)+(m2*x2)+(m3*x3)+(m4*x4) 其中: x1=[x11,x12,x13...] x2=[x21,x22,x23...] x3=[x31,x32,x33...] x4=[x41,x42,x43...] y=[y1,y2,y3,y4,...] A = [[x11,x21,x31,x41],[x12,x22,x32,x42],.....] 我一直在努力做到: m=numpy.linalg.lstsq(A,y

我试图求解方程组中的m1,m2,m3,m4,这样:

y=(m1*x1)+(m2*x2)+(m3*x3)+(m4*x4)
其中:

x1=[x11,x12,x13...]
x2=[x21,x22,x23...]
x3=[x31,x32,x33...]
x4=[x41,x42,x43...]

y=[y1,y2,y3,y4,...]
A = [[x11,x21,x31,x41],[x12,x22,x32,x42],.....]
我一直在努力做到:

m=numpy.linalg.lstsq(A,y)[0]
其中:

x1=[x11,x12,x13...]
x2=[x21,x22,x23...]
x3=[x31,x32,x33...]
x4=[x41,x42,x43...]

y=[y1,y2,y3,y4,...]
A = [[x11,x21,x31,x41],[x12,x22,x32,x42],.....]
但我的结果与Mat-lab中进行的类似分析不符

您可能看到的任何建议或问题都会非常有用


谢谢。

看来您构建的
矩阵不正确。此外,
np.linalg.lstsq
似乎只接受
a
2D
数组,这意味着您可以一次对一个变量进行最小二乘运算。试试这个:

nvar = 4
one = np.ones(x1.shape)
A = np.vstack((x1,one,x2,one,x3,one)).T.reshape(nvar,x1.shape[0],2)

for i,Ai in enumerate(A):
    a = np.linalg.lstsq(Ai,y)[0]
    R = np.sqrt( ((y - Ai.dot(a))**2).sum() )
    print R

你的方法似乎是正确的。如果你发布你的实际数据,以及你期望得到的数据,这将有助于找出差异所在。Jaime感谢你的关注。不幸的是,我不被允许发布数据……因此,请拿出一些表现出相同问题的合成数据!这对我很有帮助:一旦你这样做了,你如何实现一个回归函数,将一个新的X映射到一个预测?@rjurney每次它进入for循环,你都会得到一个不同的最小二乘解,存储在
a
中。您可以使用它来计算新的预测,使用
Ai.dot(a[0])
(未测试)