我想用混合一维高斯做一个直方图作为图片。
谢谢孟老师的照片。
我的直方图是这样的:
我有一个文件,其中一列包含大量数据(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 新手,我对使用模块的方式感到困惑。拜托,你能帮助我并指导我如何完成这个情节吗?
多谢