我有一种情况,两个或多个带有一些系数的 nd 数组应该(大致)加起来到第三个数组。
array1*c1 + array2*c2 ... = array3
我正在寻找使前两个数组最近似的c1
and 。我确信 scipy 中存在某种方法,但我不确定从哪里开始。是否有我应该开始的特定模块?c2
array3
我有一种情况,两个或多个带有一些系数的 nd 数组应该(大致)加起来到第三个数组。
array1*c1 + array2*c2 ... = array3
我正在寻找使前两个数组最近似的c1
and 。我确信 scipy 中存在某种方法,但我不确定从哪里开始。是否有我应该开始的特定模块?c2
array3
numpy.linalg.lstsq为您解决这个问题。scikit-learn和StatsModels都提供了该函数的面向对象的包装器以及更高级的回归模型。
(免责声明:我是一名 scikit-learn 开发人员,所以这不是有史以来最公正的建议。)
这只是线性回归(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))
.