我正在使用numpy.lstsq()拟合一组数据:

numpy.linalg.lstsq(a,b)[0]

返回类似:
array([ -0.02179386,  0.08898451,  -0.17298247,  0.89314904])

请注意,拟合解决方案是正浮点数和负浮点数的混合。

不幸的是,在我的物理模型中,拟合解决方案代表了一个质量:因此,我想强制lstsq()返回一组正值作为拟合解决方案。是否有可能做到这一点?

IE。
solution = {a_1, ... a_i, ... a_N} with a_i > 0 for i = {1, ..., N}

最佳答案

非负最小二乘在 scipy.optimize.nnls 中实现。

from scipy.optimize import nnls

solution = nnls(a, b)[0]

关于python - numpy lstsq中的参数约束,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38826726/

10-10 19:04