我的情况是两个或多个具有一些系数的nd数组应该(大致)加到第三个数组。
array1*c1 + array2*c2 ... = array3
我正在寻找使前两个数组最接近c1
的{{1}}和c2
。我确定这样做的某种方式存在于scipy中,但我不知道从哪里开始。我应该从哪个特定模块开始?
答案 0 :(得分:3)
numpy.linalg.lstsq为您解决了这个问题。 scikit-learn和StatsModels都提供了该函数的面向对象包装器以及更高级的回归模型。
(免责声明:我是一名scikit-learn开发人员,因此这不是最公正的建议。)
答案 1 :(得分:0)
这只是线性回归(http://en.wikipedia.org/wiki/Ordinary_least_squares)。
让矩阵A
包含array1, array2, ...
列
让向量a
为array3
,x
为列向量[c1,c2,...]'
。
您想要解决问题min_{x} (Ax-a)^2
。
将导数和设置设为零,得到0=A'Ax-A'a
,得到解x=(A'A)^{-1}A'a
。
在numpy中,这是numpy.linalg.solve(numpy.dot(A.T,A),numpy.dot(A.T,a))
。