最近接触到了 Scipy 中 optimize 模块的一些函数,optimize 模块中提供了很多数值优化算法,其中,最小二乘法可以说是最经典的数值优化技术了, 通过最小化误差的平方来寻找最符合数据的曲线。但是由于我这边的需求是一个有界函数的拟合,所以网上资料介绍比较多的 leastsq 函数就不太适用。
简介
首先来看一下least_squares入参:
def least_squares(
fun, x0, jac='2-point', bounds=(-np.inf, np.inf), method='trf',
ftol=1e-8, xtol=1e-8, gtol=1e-8, x_scale=1.0, loss='linear',
f_scale=1.0, diff_step=None, tr_solver=None, tr_options={},
jac_sparsity=None, max_nfev=None, verbose=0, args=(), kwargs={}):
入参相当的多,一般来说,使用least_squares
函数只需要关注以下四个参数:
func
:残差 函数,即真实数据的y
值与拟合得到的y
值的差值x0
:表