本文簡要介紹 python 語言中 scipy.optimize.leastsq
的用法。
用法:
scipy.optimize.leastsq(func, x0, args=(), Dfun=None, full_output=False, col_deriv=False, ftol=1.49012e-08, xtol=1.49012e-08, gtol=0.0, maxfev=0, epsfcn=None, factor=100, diag=None)#
最小化一組方程的平方和。
x = arg min(sum(func(y)**2,axis=0)) y
- func: 可調用的
應至少采用一個(可能長度為
N
向量)參數並返回M
浮點數。它不得返回NaNs,否則擬合可能會失敗。M
必須大於或等於N
。- x0: ndarray
最小化的起始估計。
- args: 元組,可選
func 的任何額外參數都放在這個元組中。
- Dfun: 可調用的,可選的
計算具有跨行導數的 func 的雅可比行列式的函數或方法。如果這是無,雅可比將被估計。
- full_output: 布爾型,可選
如果
True
,返回所有可選輸出(不僅僅是x和伊爾)。- col_deriv: 布爾型,可選
如果是
True
,則指定雅可比函數沿列計算導數(更快,因為沒有轉置操作)。- ftol: 浮點數,可選
平方和所需的相對誤差。
- xtol: 浮點數,可選
近似解中所需的相對誤差。
- gtol: 浮點數,可選
函數向量和雅可比列之間所需的正交性。
- maxfev: 整數,可選
函數的最大調用次數。如果提供了 Dfun,則默認 maxfev 為 100*(N+1),其中 N 是 x0 中的元素數,否則默認 maxfev 為 200*(N+1)。
- epsfcn: 浮點數,可選
用於確定雅可比行列式前向差分近似的合適步長的變量(對於 Dfun=None)。通常實際步長為 sqrt(epsfcn)*x 如果 epsfcn 小於機器精度,則假設相對誤差在機器精度的數量級。
- factor: 浮點數,可選
確定初始步長界限的參數(
factor * || diag * x||
)。應該在間隔(0.1, 100)
中。- diag: 順序,可選
N 個正條目,用作變量的比例因子。
- x: ndarray
解決方案(或不成功調用的最後一次迭代的結果)。
- cov_x: ndarray
Hessian 矩陣的逆矩陣。法雅克和ipvt用於構建 Hessian 矩陣的估計。 None 值表示奇異矩陣,表示參數中的曲率x數值上是平坦的。獲取參數的協方差矩陣x,cov_x必須乘以殘差方差 - 請參閱curve_fit。僅返回如果full_output是
True
.- infodict: dict
帶有鍵的可選輸出字典:
nfev
函數調用次數
fvec
在輸出處評估的函數
fjac
最終近似雅可比矩陣的 QR 分解的 R 矩陣的排列,按列存儲。與 ipvt 一起,可以近似估計估計的協方差。
ipvt
一個長度為 N 的整數數組,它定義了一個置換矩陣 p,使得 fjac*p = q*r,其中 r 是具有非遞增大小的對角線元素的上三角形。 p 的 j 列是單位矩陣的 ipvt(j) 列。
qtf
向量 (transpose(q) * fvec)。
僅返回如果full_output是
True
.- mesg: str
一條字符串消息,提供有關故障原因的信息。僅返回如果full_output是
True
.- ier: int
一個整數標誌。如果它等於 1、2、3 或 4,則找到了解決方案。否則,找不到解決方案。無論哪種情況,可選的輸出變量‘mesg’ 都會提供更多信息。
參數 ::
返回 ::
注意:
“leastsq” 是 MINPACK 的 lmdif 和 lmder 算法的封裝。
cov_x 是最小二乘目標函數的 Hessian 矩陣的雅可比近似。這種近似假設目標函數基於一些觀察到的目標數據 (ydata) 和參數 f(xdata, params) 的(非線性)函數之間的差異
func(params) = ydata - f(xdata, params)
使得目標函數為
min sum((ydata - f(xdata, params))**2, axis=0) params
解 x 始終是一維數組,無論 x0 的形狀如何,或者 x0 是否為標量。
例子:
>>> from scipy.optimize import leastsq >>> def func(x): ... return 2*(x-3)**2+1 >>> leastsq(func, 0) (array([2.99999999]), 1)
相關用法
- Python SciPy optimize.least_squares用法及代碼示例
- Python SciPy optimize.line_search用法及代碼示例
- Python SciPy optimize.linprog_verbose_callback用法及代碼示例
- Python SciPy optimize.linprog用法及代碼示例
- Python SciPy optimize.linear_sum_assignment用法及代碼示例
- Python SciPy optimize.lsq_linear用法及代碼示例
- Python SciPy optimize.rosen_der用法及代碼示例
- 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.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.newton用法及代碼示例
- Python SciPy optimize.fsolve用法及代碼示例
- Python SciPy optimize.Bounds用法及代碼示例
注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.optimize.leastsq。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。