使用sklearn绘制一维高斯混合的直方图可以通过以下步骤实现:
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(-2, 1, int(0.3 * n_samples)),
np.random.normal(4, 0.5, int(0.7 * n_samples))))
X = X[:, np.newaxis]
# 使用GaussianMixture拟合数据
gmm = GaussianMixture(n_components=2)
gmm.fit(X)
# 生成一维数据点
x = np.linspace(-10, 10, 1000)
# 计算每个数据点的概率密度
density = np.exp(gmm.score_samples(x.reshape(-1, 1)))
# 绘制直方图
plt.hist(X, bins=50, density=True, alpha=0.5)
plt.plot(x, density, '-r', label='GMM')
plt.xlabel('Value')
plt.ylabel('Density')
plt.legend()
plt.show()
在上述代码中,首先使用np.random.normal
生成两个高斯分布的数据,然后使用GaussianMixture
拟合数据,接着生成一维数据点,并计算每个数据点的概率密度。最后,使用plt.hist
绘制原始数据的直方图,并使用plt.plot
绘制拟合的高斯混合模型曲线。
这样就可以使用sklearn绘制一维高斯混合的直方图了。
参考链接:
领取专属 10元无门槛券
手把手带您无忧上云