scipy.optimize.nnls

scipy.optimize.nnls(A, b, maxiter=None)[源代码]

求解 argmin_x || Ax - b ||_2x>=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)