本文简要介绍 python 语言中 scipy.optimize.nnls
的用法。
用法:
scipy.optimize.nnls(A, b, maxiter=None, *, atol=None)#
将
argmin_x || Ax - b ||_2
求解为x>=0
。该问题通常称为NonNegative 最小二乘问题,是一个具有凸约束的凸优化问题。当
x
建模仅可获得非负值的量时,通常会出现这种情况;成分重量、成分成本等。- A: (m, n) 数组
系数数组
- b: (m,) ndarray, 浮点数
右侧向量。
- maxiter: int, optional:
最大迭代次数,可选。默认值为
3 * n
。- atol: float:
算法中用于评估预计残差
(A.T @ (A x - b)
条目与零的接近程度的容差值。增加该值可以放宽解决方案的约束。典型的松弛值可以选择为max(m, n) * np.linalg.norm(a, 1) * np.spacing(1.)
。该值未设置为默认值,因为范数运算对于大问题来说变得昂贵,因此只能在必要时使用。
- x: ndarray
解决方案向量。
- rnorm: 浮点数
残差的 2-范数
|| Ax-b ||_2
。
参数 ::
返回 ::
注意:
该代码基于[2],它是[1]经典算法的改进版本。它利用活动集方法并解决非负最小二乘问题的 KKT (Karush-Kuhn-Tucker) 条件。
参考:
[1]:Lawson C.、Hanson R.J.,“解决最小二乘问题”,SIAM,1995,DOI:10.1137/1.9781611971217
[2]:Bro、Rasmus 和 de Jong、Sijmen,“快速非负约束最小二乘算法”,《化学计量学杂志》,1997 年,DOI:10.1002/(SICI)1099-128X(199709/10)11:5<393::AID-CEM483>3.0.CO;2-L
例子:
>>> import numpy as np >>> 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)
相关用法
- Python SciPy optimize.newton用法及代码示例
- Python SciPy optimize.newton_krylov用法及代码示例
- Python SciPy optimize.rosen_der用法及代码示例
- Python SciPy optimize.line_search用法及代码示例
- Python SciPy optimize.rosen用法及代码示例
- Python SciPy optimize.shgo用法及代码示例
- Python SciPy optimize.minimize_scalar用法及代码示例
- Python SciPy optimize.root用法及代码示例
- Python SciPy optimize.fmin用法及代码示例
- Python SciPy optimize.NonlinearConstraint用法及代码示例
- Python SciPy optimize.KrylovJacobian用法及代码示例
- Python SciPy optimize.toms748用法及代码示例
- Python SciPy optimize.linprog_verbose_callback用法及代码示例
- Python SciPy optimize.bracket用法及代码示例
- Python SciPy optimize.milp用法及代码示例
- Python SciPy optimize.diagbroyden用法及代码示例
- Python SciPy optimize.bisect用法及代码示例
- Python SciPy optimize.isotonic_regression用法及代码示例
- Python SciPy optimize.golden用法及代码示例
- Python SciPy optimize.brute用法及代码示例
- Python SciPy optimize.fsolve用法及代码示例
- Python SciPy optimize.Bounds用法及代码示例
- Python SciPy optimize.fixed_point用法及代码示例
- Python SciPy optimize.rosen_hess用法及代码示例
- Python SciPy optimize.broyden1用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.optimize.nnls。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。