【问题标题】:scipy.optimize.curve_fit, parameters all return with 1scipy.optimize.curve_fit,参数全部返回 1
【发布时间】:2020-08-30 15:23:55
【问题描述】:

我使用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。我的问题有解决方案吗?

【问题讨论】:

标签: python scipy scipy-optimize


【解决方案1】:

您可以通过提供初始猜测和参数边界来改进 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
       ] )

【讨论】:

  • 我可以随机初始化 p0 吗?
  • @jasonshu 是的,你可以。但是,您需要确保 p0 在您提供的上限和下限之间。如果我没有更好的猜测,我将使用上限和下限的平均值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-20
  • 1970-01-01
  • 2018-03-24
  • 2012-05-02
  • 1970-01-01
  • 2021-03-21
  • 2015-10-26
相关资源
最近更新 更多