本文简要介绍 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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。