您可能知道,python中的lmfit模块可以方便地扩展scipy的功能。优化功能。
但是我找不到我认为必要的东西:选择步长的可能性(用于部分推导,计算参数空间中的chi2等)。我习惯在IDL下使用时的步骤,我很惊讶我没有在python下找到它。
很明显,默认步骤非常小,在拟合粗糙模型时可能会导致chi2不变......因此很难。
所以我的问题:如何选择在python下拟合时的步骤?
答案 0 :(得分:1)
lmfit的minimizer可以包装来自scipy.optimize
的几个优化器。不幸的是,各种求解器的界面并不是非常统一,特别是对于步长,公差和停止条件等选项。这部分是因为算法实际上是不同的,部分是因为scipy.optimize
本身包含了很多旧的代码。
也就是说,lmfit的默认求解器是scipy.optimize.leastsq
或MINPACK-1,它非常类似于(非常好的,我记得)IDL的MPFIT包。与这些代码一样,您可以使用epsfcn
指定用于计算偏导数的初始步骤。
用lmfit来做这件事取决于你如何使用lmfit。一种方法是
result = lmfit.minimize(objective_function, params, args=(x, data),
epsfcn=0.001)
如需更详细的解答,请提供更详细的问题。