scipy.optimize.nnls¶
- scipy.optimize.nnls(A, b, maxiter=None)[源代码]¶
求解
argmin_x || Ax - b ||_2
为x>=0
。这是FORTRAN非负最小二乘求解器的包装器。- 参数
- Andarray
矩阵
A
如上所示。- bndarray
右侧矢量。
- maxiter:int,可选
最大迭代次数,可选。默认值为
3 * A.shape[1]
。
- 退货
- xndarray
解向量。
- rnorm浮动
剩下的,
|| Ax-b ||_2
。
参见
lsq_linear
变量有界的线性最小二乘法
注意事项
FORTRAN代码发表在下面的书中。该算法是一种有效集方法。它解决了非负最小二乘问题的KKT(Karush-Kuhn-Tucker)条件。
参考文献
劳森·C,汉森·R·J,(1987)求解最小二乘问题,SIAM
示例
>>> from scipy.optimize import nnls ... >>> A = np.array([[1, 0], [1, 0], [0, 1]]) >>> b = np.array([2, 1, 1]) >>> nnls(A, b) (array([1.5, 1. ]), 0.7071067811865475)
>>> b = np.array([-1, -1, -1]) >>> nnls(A, b) (array([0., 0.]), 1.7320508075688772)