高斯混合模型(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()