EM 算法相当于一个框架,可以采用不同的模型来进行聚类,比如 GMM(高斯混合模型),或者 HMM(隐马尔科夫模型)来进行聚类。GMM 是通过概率密度来进行聚类,聚成的类符合高斯分布(正态分布)。而 HMM 用到了马尔可夫过程,在这个过程中,通过状态转移矩阵来计算状态转移的概率。HMM 在自然语言处理和语音识别领域中有广泛的应用。
EM 有两个步骤,E 步和 M 步:E 步相当于通过初始化的参数来估计隐含变量,M 步是通过隐含变量来反推优化参数。最后通过 EM 步骤的迭代得到最终的模型参数。
创建 GMM 聚类
from sklearn.mixture import GaussianMixture
gmm = GaussianMixture(n_components=1, covariance_type='full', max_iter=100)
1、n_components:即高斯混合模型的个数,也就是要聚类的个数,默认值为 1。如果不指定 n_components,最终的聚类结果都会为同一个值。
2、covariance_type:代表协方差类型。一个高斯混合模型的分布是由均值向量和协方差矩阵决定的,所以协方差的类型也代表了不同的高斯混合模型的特征。协方差类型有 4 种取值:
- covariance_type=full,代表完全协方差,也就是元素都不为 0;
- covariance_type=tied,代表相同的完全协方差;
- covariance_type=diag,代表对角协方差,也就是对角不为 0,其余为 0;
- covariance_type=spherical,代表球面协方差,非对角为 0,对角完全相同,呈现球面的特性。
3、max_iter:代表最大迭代次数,EM 算法是由 E 步和 M 步迭代求得最终的模型参数,这里可以指定最大迭代次数,默认值为 100。
<
该博客介绍了如何利用EM算法和高斯混合模型(GMM)进行无监督聚类。首先解释了EM算法的E步和M步,然后展示了在Python中使用scikit-learn库创建GMM聚类模型的过程,包括设置模型参数如组件数量、协方差类型和最大迭代次数。接着,博主应用GMM对王者荣耀英雄属性数据进行聚类,并对数据进行了预处理,包括特征选择、标准化和异常值处理。最后,提到了聚类效果的评估指标Calinski-Harabasz指数,并指出聚类结果需要人工分析。此外,还讨论了聚类在数据挖掘中的作用,如数据降维。
&spm=1001.2101.3001.5002&articleId=112616453&d=1&t=3&u=f6dfcb4f328a46188e92f3427b726b84)
1452

被折叠的 条评论
为什么被折叠?



