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

今天我来带你进行 EM 的实战。上节课,我讲了 EM 算法的原理,EM 算法相当于一个聚类框架,里面有不同的聚类模型,比如 GMM 高斯混合模型,或者 HMM 隐马尔科夫模型。其中你需要理解的是 EM 的两个步骤,E 步和 M 步:E 步相当于通过初始化的参数来估计隐含变量,M 步是通过隐含变量来反推优化参数。最后通过 EM 步骤的迭代得到最终的模型参数。
今天我们进行 EM 算法的实战,你需要思考的是:
如何使用 EM 算法工具完成聚类?
什么情况下使用聚类算法?我们用聚类算法的任务目标是什么?
面对王者荣耀的英雄数据,EM 算法能帮助我们分析出什么?
如何使用 EM 工具包
在 Python 中有第三方的 EM 算法工具包。由于 EM 算法是一个聚类框架,所以你需要明确你要用的具体算法,比如是采用 GMM 高斯混合模型,还是 HMM 隐马尔科夫模型。
这节课我们主要讲解 GMM 的使用,在使用前你需要引入工具包:
我们看下如何在 sklearn 中创建 GMM 聚类。
首先我们使用 gmm = GaussianMixture(n_components=1, covariance_type=‘full’, max_iter=100) 来创建 GMM 聚类,其中有几个比较主要的参数(GMM 类的构造参数比较多,我筛选了一些主要的进行讲解),我分别来讲解下:
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《数据分析实战 45 讲》,新⼈⾸单¥59
《数据分析实战 45 讲》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(35)
- 最新
- 精选
- 哆哩咪fa👻才买的课,请问有vx群或者可以相互沟通的群么
作者回复: 找运营加微信群
514 - 高桥凉瓜之所以热力图不显示最大攻速和攻击范围,是因为这两列的数据的类型是string,想要在热力图也显示这两项的话可以在构建热力图前就进行数据清洗: ``` data[u'最大攻速'] = data[u'最大攻速'].apply(lambda x: float(x.strip('%'))/100) data[u'攻击范围']=data[u'攻击范围'].map({'远程':1,'近战':0}) ```
作者回复: Good Job
210 - 許敲敲最后一个 data_to_csv()也最好加上encoding='gb18030';不然会乱码
编辑回复: 嗯 中文的话需要需要注意这个。
7 - 从未在此问下老师,当几个特征相关性较大时,怎么选择最具有代表性的那个呢
编辑回复: 相关性比较大的时候,可以任意选择其中一个,因为这些指标相关性比较大,所以你选择哪一个其实结果都相差不大。当然对于相关性比较大,不同人的理解是不同的额,比如你可以定义相关性大于0.9或者相关性大于0.8。
4 - 周飞1.不做特征选择的情况下,得到的Calinski_Harabaz 分数 大约是 23.1530273621 ,做特征选择的情况下 大约是:21.2142191471. 2.聚类个数为3的时候 Calinski_Harabaz 分数 大约是 22.9119297953 。聚类个数为30的时候 Calinski_Harabaz 分数 大约是 21.2142191471
作者回复: Good Job
22 - 从未在此还有,非数值型的特征怎么进行聚类?
编辑回复: 非数值的类型需要先转化为数值类型,比如“远程”转化为1,“近战”转化为0。这样才能做矩阵的运算。
22 - McKee Chen分别针对以下三种情况进行聚类操作,得到的Calinski_Harabaz 分数分别为: 1.使用所有特征数,聚类类别为30,得分为33.286020580818494 2.特征数降维处理后,聚类类别为30,得分为27.964658388803077 3.特征数降维处理后,聚类类别为3,得分为19.358008332914284 根据以上结果,可以总结出:当聚类类别数相同时,特征数越多,聚类效果越好;当进行特征数降维处理时,聚类类别数越多,聚类效果越好
作者回复: 加油 总结的不错
- Ricky问个问题:关于calinski_harabaz_score的使用,同一套样本数据,用不同的模型计算prediction后,对比值得大小么? 谢谢!
作者回复: CH指标通过计算类中各点与类中心的距离平方和来度量类内的紧密度,通过计算各类中心点与数据集中心点距离平方和来度量数据集的分离度,CH指标由分离度与紧密度的比值得到。从而,CH值越大代表着类自身越紧密,类与类之间越分散,即聚类结果的更优。
- Simon'攻击范围' 特征进行映射为0,1后,是不是可以不用z-score了?
作者回复: 是的。如果特征取值范围已经在0~1之间,确实无需再进行数据规范化
- groot888热力图展现出来,相关的分数大,是不是也可以当做一种聚类算法。
作者回复: 可以尝试。或者如果两个特征相关系数= ±1,这种情况称为多重共线性,可以考虑去掉一个特征。
2
收起评论