小编Thé*_*dez的帖子

如何使用 sklearn 制作一维高斯混合直方图?

我想用混合一维高斯做一个直方图作为图片。

在此输入图像描述

谢谢孟老师的照片。

我的直方图是这样的:

在此输入图像描述

我有一个文件,其中一列包含大量数据(4,000,000 个数字):

1.727182
1.645300
1.619943
1.709263
1.614427
1.522313
Run Code Online (Sandbox Code Playgroud)

我正在使用以下脚本,并进行了比孟和正义勋爵所做的修改:

from matplotlib import rc
from sklearn import mixture
import matplotlib.pyplot as plt
import numpy as np
import matplotlib
import matplotlib.ticker as tkr
import scipy.stats as stats

x = open("prueba.dat").read().splitlines()

f = np.ravel(x).astype(np.float)
f=f.reshape(-1,1)
g = mixture.GaussianMixture(n_components=3,covariance_type='full')
g.fit(f)
weights = g.weights_
means = g.means_
covars = g.covariances_

plt.hist(f, bins=100, histtype='bar', density=True, ec='red', alpha=0.5)
plt.plot(f,weights[0]*stats.norm.pdf(f,means[0],np.sqrt(covars[0])), c='red')
plt.rcParams['agg.path.chunksize'] = 10000

plt.grid()
plt.show()
Run Code Online (Sandbox Code Playgroud)

当我运行脚本时,我有以下情节:

在此输入图像描述

所以,我不知道如何放置必须存在的所有高斯的开始和结束。我是 python 新手,我对使用模块的方式感到困惑。拜托,你能帮助我并指导我如何完成这个情节吗?

多谢

python matplotlib histogram scikit-learn gmm

5
推荐指数
2
解决办法
9147
查看次数

标签 统计

gmm ×1

histogram ×1

matplotlib ×1

python ×1

scikit-learn ×1