我使用numpy.lstsq()
:
numpy.linalg.lstsq(a,b)[0]
返回类似的内容:
array([ -0.02179386, 0.08898451, -0.17298247, 0.89314904])
请注意,拟合解决方案是正浮动和负浮动的混合。
不幸的是,在我的物理模型中,拟合解决方案代表质量:因此我希望强制lstsq()
返回一组正值作为拟合的解。有可能这样做吗?
即
solution = {a_1, ... a_i, ... a_N} with a_i > 0 for i = {1, ..., N}
答案 0 :(得分:6)
非负最小二乘法在scipy.optimize.nnls
中实现。
from scipy.optimize import nnls
solution = nnls(a, b)[0]