问题描述
我使用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)=38956
,np.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
] )