Scipy curve_fit卡住了吗?

问题描述

(这不是技术性的问题,而是试图了解幕后发生的事情以及我遇到的是否是常见问题。请不要举报我!)

我一直在使用scipy.optimize.curve_fit进行一些非线性回归,并且注意到优化似乎经常卡在参数范围内。就上下文而言,尽管我并不擅长算法的研究,但我已经使用其他软件做了一些非线性优化。这是我第一次使用scipy,它只是……比我期望的更多地困了 lot

我要提供给curve_fit函数的示例-这里tdn是各种数据系列,长度约为100-150:

def dynamic(exogs,alpha_0,delta,theta,beta):
    t,dn = exogs
    alpha_f = alpha_0 * delta
    return np.log(beta) - (alpha_0 + (1 - np.exp(-t/theta)) * (alpha_f - alpha_0)) * dn

non_bds = ([1e-02,0.1,5,0],[1e02,10,1e03,10])

fit_non = curve_fit(dynamic,[df['t'],df['dn']],Y,bounds=non_bds,loss='huber',max_nfev=1e06)

在这种情况下,delta大约90%的时间处于边界(0.1或10),theta大约50%的时间处于边界,我都不希望。

我发现this answer有时似乎curve_fit表现异常,所以我想知道-curve_fit的优化程序是否经常陷入困境?这是一个已知问题,是否有任何好的方法可以通过调整任何设置或使用其他解决方法解决

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)