numpy lstsq中的参数约束

rud*_*udy 4 python numpy

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

numpy.linalg.lstsq(a,b)[0]
Run Code Online (Sandbox Code Playgroud)

返回类似于:

array([ -0.02179386,  0.08898451,  -0.17298247,  0.89314904])
Run Code Online (Sandbox Code Playgroud)

请注意,拟合解决方案是正浮子和负浮子的混合.

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

solution = {a_1, ... a_i, ... a_N} with a_i > 0 for i = {1, ..., N}
Run Code Online (Sandbox Code Playgroud)

Alb*_*oso 8

非负最小二乘法实现于scipy.optimize.nnls.

from scipy.optimize import nnls

solution = nnls(a, b)[0]
Run Code Online (Sandbox Code Playgroud)