数据分析实战 45 讲
陈旸
清华大学计算机博士
123928 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 49 讲
第二模块:数据分析算法篇 (20讲)
第四模块:数据分析工作篇 (2讲)
数据分析实战 45 讲
15
15
1.0x
00:00/00:00
登录|注册

29丨EM聚类(下):用EM算法对王者荣耀英雄进行划分

思考题
数据挖掘算法的预处理
Calinski-Harabaz指标
无监督学习
结果分析
GMM聚类
特征选择
数据可视化
数据探索
数据加载
HMM隐马尔科夫模型
GMM高斯混合模型
Python中的EM算法工具包
迭代
M步
E步
总结
使用EM算法对王者荣耀数据进行聚类
EM算法工具包
EM算法
参考文章

该思维导图由 AI 生成,仅供参考

今天我来带你进行 EM 的实战。上节课,我讲了 EM 算法的原理,EM 算法相当于一个聚类框架,里面有不同的聚类模型,比如 GMM 高斯混合模型,或者 HMM 隐马尔科夫模型。其中你需要理解的是 EM 的两个步骤,E 步和 M 步:E 步相当于通过初始化的参数来估计隐含变量,M 步是通过隐含变量来反推优化参数。最后通过 EM 步骤的迭代得到最终的模型参数。
今天我们进行 EM 算法的实战,你需要思考的是:
如何使用 EM 算法工具完成聚类?
什么情况下使用聚类算法?我们用聚类算法的任务目标是什么?
面对王者荣耀的英雄数据,EM 算法能帮助我们分析出什么?

如何使用 EM 工具包

在 Python 中有第三方的 EM 算法工具包。由于 EM 算法是一个聚类框架,所以你需要明确你要用的具体算法,比如是采用 GMM 高斯混合模型,还是 HMM 隐马尔科夫模型。
这节课我们主要讲解 GMM 的使用,在使用前你需要引入工具包:
from sklearn.mixture import GaussianMixture
我们看下如何在 sklearn 中创建 GMM 聚类。
首先我们使用 gmm = GaussianMixture(n_components=1, covariance_type=‘full’, max_iter=100) 来创建 GMM 聚类,其中有几个比较主要的参数(GMM 类的构造参数比较多,我筛选了一些主要的进行讲解),我分别来讲解下:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了如何使用EM算法对王者荣耀英雄进行聚类分析的实战应用。作者首先介绍了EM算法的聚类框架,以及在Python中使用第三方EM算法工具包进行聚类分析的具体步骤。文章重点讲解了如何使用GMM高斯混合模型对英雄数据进行聚类,并展示了数据加载、探索、可视化分析、数据预处理和聚类模型构造等环节。通过实例展示,读者可以了解如何利用EM算法对复杂的英雄数据进行聚类分析,从而发现英雄之间的特性和关联,为玩家在游戏中的英雄选择提供参考。此外,文章还提到了聚类结果的评估方式和聚类算法在数据挖掘中的应用。总的来说,本文内容涵盖了EM算法的原理和实际应用,对对聚类算法感兴趣的读者具有一定的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《数据分析实战 45 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(35)

  • 最新
  • 精选
  • 哆哩咪fa👻
    才买的课,请问有vx群或者可以相互沟通的群么

    作者回复: 找运营加微信群

    2019-02-18
    5
    14
  • 高桥凉瓜
    之所以热力图不显示最大攻速和攻击范围,是因为这两列的数据的类型是string,想要在热力图也显示这两项的话可以在构建热力图前就进行数据清洗: ``` data[u'最大攻速'] = data[u'最大攻速'].apply(lambda x: float(x.strip('%'))/100) data[u'攻击范围']=data[u'攻击范围'].map({'远程':1,'近战':0}) ```

    作者回复: Good Job

    2019-03-27
    2
    11
  • 許敲敲
    最后一个 data_to_csv()也最好加上encoding='gb18030';不然会乱码

    编辑回复: 嗯 中文的话需要需要注意这个。

    2019-02-19
    7
  • 从未在此
    问下老师,当几个特征相关性较大时,怎么选择最具有代表性的那个呢

    编辑回复: 相关性比较大的时候,可以任意选择其中一个,因为这些指标相关性比较大,所以你选择哪一个其实结果都相差不大。当然对于相关性比较大,不同人的理解是不同的额,比如你可以定义相关性大于0.9或者相关性大于0.8。

    2019-02-18
    4
  • 周飞
    1.不做特征选择的情况下,得到的Calinski_Harabaz 分数 大约是 23.1530273621 ,做特征选择的情况下 大约是:21.2142191471. 2.聚类个数为3的时候 Calinski_Harabaz 分数 大约是 22.9119297953 。聚类个数为30的时候 Calinski_Harabaz 分数 大约是 21.2142191471

    作者回复: Good Job

    2019-04-27
    2
    2
  • 从未在此
    还有,非数值型的特征怎么进行聚类?

    编辑回复: 非数值的类型需要先转化为数值类型,比如“远程”转化为1,“近战”转化为0。这样才能做矩阵的运算。

    2019-02-18
    2
    2
  • McKee Chen
    分别针对以下三种情况进行聚类操作,得到的Calinski_Harabaz 分数分别为: 1.使用所有特征数,聚类类别为30,得分为33.286020580818494 2.特征数降维处理后,聚类类别为30,得分为27.964658388803077 3.特征数降维处理后,聚类类别为3,得分为19.358008332914284 根据以上结果,可以总结出:当聚类类别数相同时,特征数越多,聚类效果越好;当进行特征数降维处理时,聚类类别数越多,聚类效果越好

    作者回复: 加油 总结的不错

    2021-01-13
    1
  • Ricky
    问个问题:关于calinski_harabaz_score的使用,同一套样本数据,用不同的模型计算prediction后,对比值得大小么? 谢谢!

    作者回复: CH指标通过计算类中各点与类中心的距离平方和来度量类内的紧密度,通过计算各类中心点与数据集中心点距离平方和来度量数据集的分离度,CH指标由分离度与紧密度的比值得到。从而,CH值越大代表着类自身越紧密,类与类之间越分散,即聚类结果的更优。

    2020-04-16
  • Simon
    '攻击范围' 特征进行映射为0,1后,是不是可以不用z-score了?

    作者回复: 是的。如果特征取值范围已经在0~1之间,确实无需再进行数据规范化

    2020-04-09
  • groot888
    热力图展现出来,相关的分数大,是不是也可以当做一种聚类算法。

    作者回复: 可以尝试。或者如果两个特征相关系数= ±1,这种情况称为多重共线性,可以考虑去掉一个特征。

    2020-01-22
    2
收起评论
显示
设置
留言
35
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部