高斯混合模型(Gaussian Mixture Model,GMM)是一种基于概率的无监督学习模型,通过假设数据由多个高斯分布组成来进行数据建模。它在机器学习、统计学和信号处理等领域有广泛的应用。
GMM 从整体来看,它可以表示对观测数据分布的表示、或者代表某一种复杂的分布,并且可以从这种分布中产生数据。从实现细节来看,内部由多个高斯分布组合而成,每一个高斯分布又可以理解为一个聚类中的簇。所以,也可以把 GMM 当做一个聚类算法。
import matplotlib.pyplot as plt from sklearn.mixture import GaussianMixture from sklearn.datasets import make_blobs import numpy as np def test(): # 创建数据 np.random.seed(0) x, y = make_blobs(n_samples=1000, n_features=2, centers=[(0, 1.5), [1, 0.5]], cluster_std=[0.4, 0.5], random_state=42) # 模型训练 estimator = GaussianMixture(n_components=2, random_state=42) estimator.fit(x) # 1. 用于数据聚类 y_pred = estimator.predict(x) print(y_pred) # 2. 用于产生数据 data = estimator.sample(3) print(data) # 可视化 plt.grid() plt.scatter(x[:, 0], x[:, 1], c=y_pred) plt.show() if __name__ == '__main__': test()