本文簡要介紹 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。