如何用 EM 算法对王者荣耀数据进行聚类

您所在的位置:网站首页 王者荣耀数据可视化怎么设置的 如何用 EM 算法对王者荣耀数据进行聚类

如何用 EM 算法对王者荣耀数据进行聚类

2024-07-15 19:22:35| 来源: 网络整理| 查看: 265

EM 的英文是 Expectation Maximization,所以 EM 算法也叫最大期望算法。 在这里插入图片描述 举个栗子🙌:

将一份炒菜等分给两个人,实际上最终我们想要的是碟子 A 和碟子 B 中菜的份量,你可以把它们理解为想要求得的模型参数。然后我们通过 EM 算法中的 E 步来进行观察,然后通过 M 步来进行调整 A 和 B 的参数,最后让碟子 A 和碟子 B 的参数不再发生变化为止。

EM 算法可以理解成为是一个框架,在这个框架中可以采用不同的模型来用 EM 进行求解。常用的 EM 聚类有 GMM 高斯混合模型和 HMM 隐马尔科夫模型。

K-Means和EM算法比较 相比于 K-Means 算法,EM 聚类更加灵活,因为 K-Means 是通过距离来区分样本之间的差别的,且每个样本在计算的时候只能属于一个分类,称之为是硬聚类算法。而 EM 聚类在求解的过程中,实际上每个样本都有一定的概率和每个聚类相关,叫做软聚类算法。

EM聚类的工作原理 将潜在类别当做隐藏变量,样本看做观察值,把聚类问题转化为参数估计问题,最终把样本进行聚类。

实战 流程:数据探索->数据清理->特征选择->模型训练->模型评估

# -*- coding: utf-8 -*- import pandas as pd import csv import matplotlib.pyplot as plt import seaborn as sns from sklearn.mixture import GaussianMixture from sklearn.preprocessing import StandardScaler # 数据加载,避免中文乱码问题 data_ori = pd.read_csv('C:/Users/1/Downloads/EM_data-master/EM_data-master/heros.csv', encoding = 'gb18030') features = [u'最大生命',u'生命成长',u'初始生命',u'最大法力', u'法力成长',u'初始法力',u'最高物攻',u'物攻成长',u'初始物攻',u'最大物防',u'物防成长',u'初始物防', u'最大每5秒回血', u'每5秒回血成长', u'初始每5秒回血', u'最大每5秒回蓝', u'每5秒回蓝成长', u'初始每5秒回蓝', u'最大攻速', u'攻击范围'] data = data_ori[features] # 对英雄属性之间的关系进行可视化分析 # 设置plt正确显示中文 plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus']=False #用来正常显示负号 # 用热力图呈现features_mean字段之间的相关性 corr = data[features].corr() plt.figure(figsize=(14,14)) # annot=True显示每个方格的数据 sns.heatmap(corr, annot=True) plt.show() # 相关性大的属性保留一个,因此可以对属性进行降维 features_remain = [u'最大生命', u'初始生命', u'最大法力', u'最高物攻', u'初始物攻', u'最大物防', u'初始物防', u'最大每5秒回血', u'最大每5秒回蓝', u'初始每5秒回蓝', u'最大攻速', u'攻击范围'] data = data_ori[features_remain] data[u'最大攻速'] = data[u'最大攻速'].apply(lambda x: float(x.strip('%'))/100) data[u'攻击范围']=data[u'攻击范围'].map({'远程':1,'近战':0}) # 采用Z-Score规范化数据,保证每个特征维度的数据均值为0,方差为1 ss = StandardScaler() data = ss.fit_transform(data) # 构造GMM聚类 gmm = GaussianMixture(n_components=30, covariance_type='full') gmm.fit(data) # 训练数据 prediction = gmm.predict(data) print(prediction) # 将分组结果输出到CSV文件中 data_ori.insert(0, '分组', prediction) data_ori.to_csv('C:/Users/1/Downloads/EM_data-master/EM_data-master/hero_out.csv', index=False, sep=',') #聚类结果的评估 from sklearn.metrics import calinski_harabaz_score print(calinski_harabaz_score(data, prediction))

运行结果:得到hero_out.csv文件(部分如下) 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭