python 拟合多峰直方图
时间: 2023-10-01 17:11:54 浏览: 248
要拟合多峰直方图,可以使用高斯混合模型 (Gaussian Mixture Model, GMM)。GMM 可以将多个高斯分布混合在一起,从而形成一个可以拟合多峰分布的模型。
以下是一个使用 sklearn 库中的 GMM 模型拟合多峰直方图的例子:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.mixture import GaussianMixture
# 生成多峰分布的样本数据
np.random.seed(0)
n_samples = 1000
x = np.concatenate([np.random.normal(loc=i, scale=0.5, size=int(n_samples/3)) for i in [-3, 0, 3]])
# 绘制原始直方图
plt.hist(x, bins=30, density=True, alpha=0.6, color='b')
# 使用 GMM 拟合多峰直方图
gmm = GaussianMixture(n_components=3)
gmm.fit(x.reshape(-1, 1))
# 生成拟合曲线
x_plot = np.linspace(-6, 6, 1000)
y_plot = np.exp(gmm.score_samples(x_plot.reshape(-1, 1)))
# 绘制拟合曲线
plt.plot(x_plot, y_plot, '-r', linewidth=2)
plt.show()
```
上述代码中,我们首先生成了一个多峰分布的样本数据,然后使用 GMM 模型拟合这个分布。最后,我们生成了拟合曲线,并将其绘制在原始直方图上。
执行上述代码后,会得到一个拟合了多峰直方图的图像。你可以尝试修改代码中的样本数据,以及 GMM 模型的参数,来观察不同的拟合效果。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)