问题描述
(这不是技术性的问题,而是试图了解幕后发生的事情以及我遇到的是否是常见问题。请不要举报我!)
我一直在使用scipy.optimize.curve_fit
进行一些非线性回归,并且注意到优化似乎经常卡在参数范围内。就上下文而言,尽管我并不擅长算法的研究,但我已经使用其他软件做了一些非线性优化。这是我第一次使用scipy
,它只是……比我期望的更多地困了 lot 。
我要提供给curve_fit
的函数的示例-这里t
和dn
是各种数据系列,长度约为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 (将#修改为@)