gpt4 book ai didi

python - 我怎样才能用sklearn做一维高斯混合的直方图?

转载 作者:行者123 更新时间:2023-12-04 12:41:25 27 4
gpt4 key购买 nike

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

enter image description here

谢谢孟的照片。

我的直方图是这样的:

enter image description here

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

1.727182
1.645300
1.619943
1.709263
1.614427
1.522313

我正在使用以下脚本,并进行了比 Meng 和 Justice Lord 所做的修改:
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()

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

enter image description here

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

非常感谢

最佳答案

这都是关于 reshape 。
首先,您需要 reshape f。
对于 pdf,在使用 stats.norm.pdf 之前 reshape 。同样,在绘图前排序和 reshape 。

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()

# create the data
x = np.concatenate((np.random.normal(5, 5, 1000),np.random.normal(10, 2, 1000)))

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)

f_axis = f.copy().ravel()
f_axis.sort()
plt.plot(f_axis,weights[0]*stats.norm.pdf(f_axis,means[0],np.sqrt(covars[0])).ravel(), c='red')

plt.rcParams['agg.path.chunksize'] = 10000

plt.grid()
plt.show()

enter image description here

关于python - 我怎样才能用sklearn做一维高斯混合的直方图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55187037/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com