scipy.optimize.curve_fit,所有参数均返回1

问题描述

我使用scipy.optimize.curve_fit来拟合数据。

params = curve_fit(gauss2,A,B)

def gauss2(x,a1,b1,c1,a2,b2,c2):
    return a1*np.exp(-((x-b1)/c1)**2) + a2*np.exp(-((x-b2)/c2)**2)

由于A和B是很大的数字(np.mean(A)=38956np.mean(B)=3112),params这里是1。我的问题有解决方案吗?

解决方法

您可以通过提供初始猜测和参数边界来改善curve_fit的结果。

curve_fit(gauss2,A,B,p0=(a0,b0,c0,a0,c0),# your inital guess for these parameters
       bounds=[
        (a1,b1,c1,a1,c1),# lower bound for parameters
        (a2,b2,c2,a2,c2) # upper bound for parameters
       ] )