python gmm em算法 2维数据_实战:用EM聚类划分王者荣耀英雄

v2-3c90695188f72d7257e4cc6e3d778d80_1440w.jpg?source=172ae18b

EM聚类

最大期望算法(Expectation-Maximization algorithm, EM)是一类通过迭代进行极大似然估计(Maximum Likelihood Estimation, MLE)的优化算法 ,通常作为牛顿迭代法(Newton-Raphson method)的替代用于对包含隐变量(latent variable)或缺失数据(incomplete-data)的概率模型进行参数估计 。

EM算法的标准计算框架由E步(Expectation-step)和M步(Maximization step)交替组成,算法的收敛性可以确保迭代至少逼近局部极大值。EM算法是MM算法(Minorize-Maximization algorithm)的特例之一,拥有多个改进版本,包括EM梯度算法、广义EM算法等 。

下面是我对EM算法理解的思维导图:

v2-ac05b41186388d00112cbb1b253fa8db_b.jpg

EM算法相当于一个聚类框架,里面有不同的聚类模型,比如GMM高斯混合模型,或HMM隐马尔科夫模型。本次练习采用的是GMM高斯混合模型

我们通过聚类算法将特征值相近的数据归为一类,不同类之间的差异较大,这样就可以对原始数据进行降维度。通过分成几个组来研究每组的特征。比如我们该案例中对王者荣耀英雄进行分类。如果你的对手选择你擅长的英雄之后,你就可以从同类别中选择另一个英雄作为备选。


分析流程

v2-25255a8145d3a91d64e64fe701400818_b.jpg

获得数据

文件名:heros.csv

xiujiayou/python-sklearn​github.com
v2-2b218af72fd4b3c1df756f9cf72b2acf_ipico.jpg

理解数据

数据有69个英雄的20个特征,这些属性分别是最大生命、生命成长、初始生命、最大法力、法力成长、初始法力、最高物攻、物攻成长、初始物攻、最大物防、物防成长、初始物防、最大每 5 秒回血、每 5 秒回血成长、初始每 5 秒回血、最大每 5 秒回蓝、每 5 秒回蓝成长、初始每 5 秒回蓝、最大攻速和攻击范围等

首先导入包和加载数据源

v2-1390b6452da365a1847ec2a362553606_b.jpg

v2-ae249490100a8dd1577f1d8e5aa668d8_b.png

对英雄属性之间的关系进行可视化分析

v2-893fda518cdbfd77fee32e9428c397ea_b.jpg

v2-7c2e75a2a34130e724cc8426da9118a9_b.jpg

从图中我们能清晰地看出哪些特征的相关性程度高。我们就从哪些相关性程度高的特征里面只选出一个代表该特征,这样能对属性进行降维。

v2-90a2a8b88e9d8f027f27186474d1ef9b_b.jpg

然后进行数据规范化

v2-2c099b7e752a8540ab4cbd91a9e3b936_b.jpg
我们能看到“最大攻速”这个属性值是百分数,不适合做矩阵运算,因此我们需要将百分数转化为小数。我们也看到“攻击范围”这个字段的取值为远程或者近战,也不适合矩阵运算,我们将取值做个映射,用 1 代表远程,0 代表近战。然后采用 Z-Score 规范化,对特征矩阵进行规范化。

构造GMM聚类

v2-8abb326c7943979ae0fb10fcaab4bda6_b.png

训练数据

v2-9e70b6e211f477da683f5b16f3d432dc_b.png

输出结果

v2-421a38e71feafaf4558f88b6dc666186_b.png

截图一部分结果

v2-a4c0da8d51147fdefd5d898b1a6d5cac_b.jpg

评估模型效果

v2-a3cc79cb6030399519f2250e3745d84b_b.png
聚类和分类不一样,聚类是无监督的学习方式,也就是我们没有实际的结果可以进行比对,所以聚类的结果评估不像分类准确率一样直观,那么有没有聚类结果的评估方式呢?这里我们可以采用 Calinski-Harabaz 指标
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值