python高斯分布拟合
时间: 2023-10-01 15:11:51 浏览: 124
使用python模拟高斯分布例子
5星 · 资源好评率100%
在Python中,可以使用SciPy库中的`curve_fit`函数来拟合高斯分布。
首先,需要导入所需的库:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
```
然后,我们定义高斯分布函数:
```python
def gaussian(x, a, x0, sigma):
return a*np.exp(-(x-x0)**2/(2*sigma**2))
```
其中,`a`是高斯分布的峰值,`x0`是高斯分布的中心,`sigma`是高斯分布的标准差。
接下来,我们生成一些数据,并将其拟合到高斯分布函数上:
```python
# 生成随机数据
xdata = np.linspace(-5, 5, 100)
y = gaussian(xdata, 1, 0, 1)
ydata = y + 0.2*np.random.normal(size=len(xdata))
# 拟合数据
popt, pcov = curve_fit(gaussian, xdata, ydata, p0=[1, 0, 1])
# 输出拟合结果
print('a =', popt[0])
print('x0 =', popt[1])
print('sigma =', popt[2])
# 绘制拟合结果
plt.plot(xdata, ydata, 'b-', label='data')
plt.plot(xdata, gaussian(xdata, *popt), 'r-', label='fit')
plt.legend()
plt.show()
```
在这里,我们使用`p0`参数来指定初始猜测值,这有助于提高拟合的精度。拟合结果会输出高斯分布函数的参数,以及绘制拟合结果的图像。
注意,拟合过程可能会失败,如果出现`OptimizeWarning`或`RuntimeWarning`等警告信息,可以尝试调整初始猜测值或使用其他拟合方法。
阅读全文