首页 > 解决方案 > 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)=38956, np.mean(B)=3112),params这里是 1。我的问题有解决方案吗?

标签: pythonscipyscipy-optimize

解决方案


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

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


推荐阅读