如您所知,python中的lmfit模块可方便地扩展scipy.optimize函数的功能。

但是,我发现似乎没有必要做些什么:选择步长的可能性(用于偏导数,在参数空间中计算chi2等)。当我在IDL下安装时,我曾经玩过这些步骤,但很奇怪,我在python下找不到它。

看起来很明显,当拟合粗糙模型时,默认步骤非常小,可能导致恒定的chi2……因此很尴尬。

所以我的问题是:在python下拟合时如何选择步骤?

最佳答案

lmfit的最小化器可以包装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)


有关更详细的答案,请提出更详细的问题。

07-28 08:04