首页 > 解决方案 > 如何最好地使用 Numpy/Scipy 为一组不同的线性方程找到最佳公共系数?

问题描述

我有 n(大约 500 万)组特定的 (k,m,v,z)* 参数来描述一些线性关系。我想找到最佳的正 a、b 和 c 系数,以最小化它们的绝对值的相加,如下所示:

在此处输入图像描述

我事先知道每个 a、b 和 c 的范围,所以我可以用它来加快速度。但是,我不知道如何正确实施此问题以最好地利用 Numpy(或 Scipy/等)。

我正在考虑使用不同的 a、b 和 c 系数(基于一个步骤)迭代地进行检查,并最终保持能够提供最小总和的组合。但在 Numpy 中正确实现这一点是另一回事。

* (k,m,v 是 0 或正数,实际上是 k,m,v,i,j,p)(z 也可以是负数)

欢迎任何提示!

标签: numpyscipynumpy-ndarrayscipy-optimize

解决方案


要么我错过了一些东西,要么a == b == c == 0是最佳的。(a,b,c)因此,通常不存在积极的解决方案。0您可以通过将最小化问题设置为on的分位数回归来明确验证这一点(k, m, v),并将分位数设置为0.5

import numpy as np
from statsmodels.regression.quantile_regression import QuantReg

x = np.random.rand(1000, 3)
a, b, c = QuantReg(np.zeros(x.shape[0]), x).fit(0.5).params

assert np.allclose([a, b, c], 0)

推荐阅读