我正在使用scipy.optimize.curve_fit
,但我怀疑它正在收敛到局部最小值而不是全局最小值。SciPy全局最小曲线拟合
我试着用模拟退火以下列方式:
def fit(params):
return np.sum((ydata - specf(xdata,*params))**2)
p = scipy.optimize.anneal(fit,[1000,1E-10])
其中specf
是我试图拟合曲线。 p
的结果显然比curve_fit
返回的最小值还要差,即使返回值表示达到全局最小值(see anneal)。
我该如何改进结果? SciPy中是否有全局曲线拟合?
感谢您的回答。我意识到全局优化的麻烦,但我猜测(希望)这个轮廓表现相对较好。我使用L2标准来衡量健康是否正确? – Gus 2011-03-22 16:55:01