我正在使用scipy.optimize.curve_fit
,但我怀疑它正在收敛到局部最小值而不是全局最小值。
我尝试通过以下方式使用模拟退火:
def fit(params):
return np.sum((ydata - specf(xdata,*params))**2)
p = scipy.optimize.anneal(fit,[1000,1E-10])
specf
我要拟合的曲线在哪里。尽管返回值表明已达到全局最小值,但结果p
显然比返回的最小值更差(请参阅 anneal)。curve_fit
我怎样才能改善结果?SciPy 中是否有全局曲线拟合器?