我有一些从两个正态分布中检索到的一维数据。我的目标是估计两个不同的高斯分量。
plt.hist(my_data, bins=100, edgecolor= 'white' normed=False)
我使用 GMM(高斯混合模型)。
clf = mixture.GaussianMixture(n_components=2)
clf.fit(my_data)
我检索我的两个高斯。
mean_1 = clf.means_[0][0]
mean_2 = clf.means_[1][0]
std_1 = np.sqrt(clf.covariances_[0][0])[0]
std_2 = np.sqrt(clf.covariances_[1][0])[0]
weight_1 = weights[0]
weight_2 = weights[1]
现在问题是,我想用我上面的高斯参数覆盖直方图。我想我首先必须对直方图进行标准化,但是如何绘制它们以便每个高斯权重的面积正确且总面积等于 1,以及如何覆盖在非标准化直方图之上?
xmin, xmax = plt.xlim()
x = np.linspace(xmin, xmax, 500)
y = norm.pdf(x, mean_1, std_1)
plt.plot(x,y)
y = norm.pdf(x, mean_2, std_2)
plt.plot(x,y)
上面的代码块给了我两个规范的高斯图,但它们都有相同的面积。