2012-09-25 83 views
1

我有一个情况,其中两个或更多个第二阵列,与一些系数,应当加起来(粗略地)到一个第三阵列。拟合多个发行

array1*c1 + array2*c2 ... = array3 

我正在寻找的c1c2,使前两个阵列最好近似array3。我确信在scipy中存在一些这样做的方式,但我不确定从哪里开始。是否有特定的模块,我应该开始?

+0

不知道如何实现,但在SciPy的退房'optimize.fsolve'。由于fsolve找到根(即,其中函数= 0),因此函数返回'array3-array1 * c1 + array2 * c2(...)',并在初始猜测中传递fsolve此函数。您可能必须在返回之前对数组求和,这可能会导致不良行为,例如一个包含相等+ ve和-ve值的数组。因此只是一个建议。 – Jdog

回答

3

numpy.linalg.lstsq解决了这个给你。该功能的面向对象的包装以及更高级的回归模型在scikit-learnStatsModels中均可用。

(声明:我是一个scikit学习开发人员,所以这还不是最公正的建议曾经)

+0

允许错误与数组值相关的东西也会有所帮助,我假设后面的选项可以做到这一点? – Shep

+0

@Shep:你是什么意思? –

+0

基本上寻找一种方法来衡量我适合的价值。但也许这是另一个问题 – Shep

0

这只是线性回归(http://en.wikipedia.org/wiki/Ordinary_least_squares)。

让基质A被具有array1, array2, ... 列让矢量aarray3x是列向量[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))