python高斯拟合_如何在python中拟合高斯曲线?

有很多方法可以将高斯函数拟合到数据集。我经常在拟合数据时使用astropy,这就是为什么我想添加这个作为额外的答案。

我使用的一些数据集应该模拟高斯噪声:import numpy as np

from astropy import modeling

m = modeling.models.Gaussian1D(amplitude=10, mean=30, stddev=5)

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

data = m(x)

data = data + np.sqrt(data) * np.random.random(x.size) - 0.5

data -= data.min()

plt.plot(x, data)

然后拟合它实际上非常简单,您可以指定要拟合数据的模型和拟合者:fitter = modeling.fitting.LevMarLSQFitter()

model = modeling.models.Gaussian1D() # depending on the data you need to give some initial values

fitted_model = fitter(model, x, data)

并绘制:plt.plot(x, data)

plt.plot(x, fitted_model(x))

不过,也可以只使用Scipy,但必须自己定义函数:from scipy import optimize

def gaussian(x, amplitude, mean, stddev):

return amplitude * np.exp(-((x - mean) / 4 / stddev)**2)

popt, _ = optimize.curve_fit(gaussian, x, data)

这将返回拟合的最佳参数,您可以这样绘制:plt.plot(x, data)

plt.plot(x, gaussian(x, *popt))

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值