【问题标题】:Issues fitting gaussian to scatter plot将高斯拟合到散点图的问题
【发布时间】:2022-11-11 11:05:36
【问题描述】:

我在拟合这些数据时遇到了很多麻烦,尤其是让拟合参数与预期参数相匹配。

from scipy.optimize import curve_fit
import numpy as np 

def gaussian_model(x, a, b, c, d): # add constant d
    return a*np.exp(-(x-b)**2/(2*c**2))+d

x = np.linspace(0, 20, 100)

mu, cov = curve_fit(gaussian_model, xdata, ydata)
fit_A = mu[0]
fit_B = mu[1]
fit_C = mu[2]
fit_D = mu[3]

fit_y = gaussian_model(xdata, fit_A, fit_B, fit_C, fit_D)
print(mu)
plt.plot(x, fit_y)
plt.scatter(xdata, ydata)
plt.show()

Here's the plot

当我打印参数时,我得到的值为 -17 的振幅,2.6 的平均值,-2.5 的标准偏差和 110 的基数。这与我对散点图的期望相去甚远。任何想法为什么?

另外,我对编码很陌生,所以任何建议都是有帮助的!感谢大家 :)

编辑:弄清楚出了什么问题!只需要添加一些猜测。

【问题讨论】:

  • 恭喜您解决了问题。现在您已经找到了自己的解决方案,可以为自己的帖子写一个答案并将其标记为正确,以防其他人有同样的问题,因此这个问题被标记为已解决,而不是用答案编辑问题。谢谢

标签: python curve-fitting gaussian


【解决方案1】:

这不是预期的答案。

这是拟合高斯的另一种方法。

该过程不是迭代的,并且不需要像在通常方法中那样启动参数的初始“猜测”值。

结果是:

微积分的方法如下图所示:

一般原理在https://fr.scribd.com/doc/14674814/Regressions-et-equations-integrales 中通过示例进行了解释。这是一个线性回归 wrt 一个积分方程,其解是高斯函数。

如果要根据某些指定的拟合标准获得更准确和/或更具体的结果,则必须使用具有非线性回归过程的软件。然后可以将上述结果用作参数的初始值,以实现更稳健的迭代过程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-11
    • 2017-06-20
    • 1970-01-01
    • 2015-08-11
    • 2013-11-19
    • 1970-01-01
    • 2019-11-06
    • 2018-08-07
    相关资源
    最近更新 更多