机器学习算法七- 基于LightGBM的分类预测基于英雄联盟10分钟数据判断红蓝方胜负.docx
《机器学习算法七- 基于LightGBM的分类预测基于英雄联盟10分钟数据判断红蓝方胜负.docx》由会员分享,可在线阅读,更多相关《机器学习算法七- 基于LightGBM的分类预测基于英雄联盟10分钟数据判断红蓝方胜负.docx(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、机器学习算法(七):基于LightGBM的分类预测(基于英雄联盟10分钟数据判断红蓝方胜负)机器学习算法七基于LightGBM的分类预测1.实验室介绍1.1LightGBM的介绍LightGBM是2017年度由微软推出的可扩展机器学习系统是微软旗下DMKT的一个开源工程由2021年度首届阿里巴巴大数据竞赛获胜者之一柯国霖教师带着开发。它是一款基于GBDT梯度提升决策树算法的分布式梯度提升框架为了知足缩短模型计算时间的需求LightGBM的设计思路主要集中在减小数据对内存与计算性能的使用和减少多机器并行计算时的通讯代价。LightGBM可以看作是XGBoost的晋级豪华版在获得与XGBoost近
2、似精度的同时又提供了更快的训练速度与更少的内存消耗。正如其名字中的Light所蕴含的那样LightGBM在大规模数据集上跑起来更加优雅轻盈一经推出便成为各种数据竞赛中刷榜夺冠的神兵利器。LightGBM的主要优点简单易用。提供了主流的PythonCR语言接口用户可以轻松使用LightGBM建模并获得相当不错的效果。高效可扩展。在处理大规模数据集时高效迅速、高准确度对内存等硬件资源要求不高。鲁棒性强。相较于深度学习模型不需要精细调参便能获得近似的效果。LightGBM直接支持缺失值与类别特征无需对数据额外进展特殊处理LightGBM的主要缺点相对于深度学习模型无法对时空位置建模不能很好地捕获图像
3、、语音、文本等高维数据。在拥有海量训练数据并能找到适宜的深度学习模型时深度学习的精度可以遥遥领先LightGBM。1.2LightGBM的应用LightGBM在机器学习与数据挖掘领域有着极为广泛的应用。据统计LightGBM模型自2016到2019年度在Kaggle平台上累积获得数据竞赛前三名三十余次其中包括CIKM2017AnalytiCup、IEEEFraudDetection等知名竞赛。这些竞赛来源于各行各业的真实业务这些竞赛成绩说明LightGBM具有很好的可扩展性在各类不同问题上都可以获得非常好的效果。同时LightGBM还被成功应用在工业界与学术界的各种问题中。例如金融风控、购置行
4、为识别、交通流量预测、环境声音分类、基因分类、生物成分分析等众多领域。固然领域相关的数据分析以及特性工程在这些解决方案中也发挥了重要作用但学习者与理论者对LightGBM的一致选择说明了这一软件包的影响力与重要性。2.实验室手册2.1学习目的解析LightGBM的参数与相关知识掌握LightGBM的Python调用并将其运用到英雄联盟游戏胜负预测数据集上2.2代码流程Part1基于英雄联盟数据集的LightGBM分类理论Step1:库函数导入Step2:数据读取/载入Step3:数据信息简单查看Step4:可视化描绘Step5:利用LightGBM进展训练与预测Step6:利用LightGBM
5、进展特征选择Step7:通过调整参数获得更好的效果2.3算法实战2.3.1基于英雄联盟数据集的LightGBM分类实战在理论的最开场我们首先需要导入一些根底的函数库包括numpyPython进展科学计算的根底软件包pandaspandas是一种快速强大灵敏且易于使用的开源数据分析以及处理工具matplotlib以及seaborn绘图。#下载需要用到的数据集!wgets:/tianchi-media.oss-cn-beijing.aliyuncs/DSW/8LightGBM/high_diamond_ranked_10min.csvStep1函数库导入#根底函数库importnumpyasnpi
6、mportpandasaspd#绘图函数库importmatplotlib.pyplotaspltimportseabornassns本次我们选择英雄联盟数据集进展LightGBM的场景体验。英雄联盟是2020年度美国拳头游戏开发的MOBA竞技网游在每局比赛中蓝队与红队在同一个地图进展作战游戏的目的是破坏敌方队伍的防御塔进而摧毁敌方的水晶枢纽拿下比赛的成功。如今共有9881场英雄联盟韩服钻石段位以上的排位比赛数据数据提供了在特别钟时的游戏状态包括击杀数、死亡数、金币数量、经历值、等级等信息。列blueWins是数据的标签代表了本场比赛是否为蓝队获胜。数据的各个特征描绘如下特征名称特征意义取值范
7、围WardsPlaced插眼数量整数WardsDestroyed拆眼数量整数FirstBlood是否获得首次击杀整数Kills击杀英雄数量整数Deaths死亡数量整数Assists助攻数量整数EliteMonsters击杀大型野怪数量整数Dragons击杀史诗野怪数量整数Heralds击杀峡谷先锋数量整数TowersDestroyed推塔数量整数TotalGold总经济整数AvgLevel平均英雄等级浮点数TotalExperience英雄总经历整数TotalMinionsKilled英雄补兵数量整数TotalJungleMinionsKilled英雄击杀野怪数量整数GoldDiff经济差距整
8、数ExperienceDiff经历差距整数CSPerMin分均补刀浮点数GoldPerMin分均经济浮点数Step2数据读取/载入#我们利用Pandas自带的read_csv函数读取并转化为DataFrame格式dfpd.read_csv(./high_diamond_ranked_10min.csv)ydf.blueWinsStep3数据信息简单查看#利用.info()查看数据的整体信息df.info()#进展简单的数据查看我们可以利用.head()头部.tail()尾部df.head()df.tail()#标注标签并利用value_counts函数查看训练集标签的数量ydf.blueWin
9、sy.value_counts()0494914930Name:blueWins,dtype:int64数据集正负标签数量根本一样不存在数据不平衡的问题#标注特征列drop_colsgameId,blueWinsxdf.drop(drop_cols,axis1)#对于特征进展一些统计描绘x.describe()我们发现不同对局中插眼数以及拆眼数的取值范围存在明显差距甚至有前特别钟插了250个眼的异常值。我们发现EliteMonsters的取值相当于DeagonsHeralds。我们发现TotalGold等变量在大局部对局中差距不大。我们发现两支队伍的经济差以及经历差是相反数。我们发现红队以及蓝
10、队拿到首次击杀的概率大概都是50%#根据上面的描绘我们可以去除一些重复变量比方只要知道蓝队是否拿到一血我们就知道红队有没有拿到可以去除红队的相关冗余数据。drop_colsredFirstBlood,redKills,redDeaths,redGoldDiff,redExperienceDiff,blueCSPerMin,blueGoldPerMin,redCSPerMin,redGoldPerMinx.drop(drop_cols,axis1,inplaceTrue)Step4:可视化描绘dataxdata_std(data-data.mean()/data.std()datapd.conc
11、at(y,data_std.iloc:,0:9,axis1)datapd.melt(data,id_varsblueWins,var_nameFeatures,value_nameValues)fig,axplt.subplots(1,2,figsize(15,5)#绘制小提琴图sns.violinplot(xFeatures,yValues,hueblueWins,datadata,splitTrue,innerquart,axax0,paletteBlues)fig.autofmt_xdate(rotation45)dataxdata_std(data-data.mean()/data.s
12、td()datapd.concat(y,data_std.iloc:,9:18,axis1)datapd.melt(data,id_varsblueWins,var_nameFeatures,value_nameValues)#绘制小提琴图sns.violinplot(xFeatures,yValues,hueblueWins,datadata,splitTrue,innerquart,axax1,paletteBlues)fig.autofmt_xdate(rotation45)plt.show()小提琴图(ViolinPlot)是用来展示多组数据的分布状态和概率密度。这种图表结合了箱形图以
13、及密度图的特征主要用来显示数据的分布形状。从图中我们可以看出击杀英雄数量越多更容易赢死亡数量越多越容易输bluekills与bluedeaths左右的区别。助攻数量与击杀英雄数量形成的图形状类似讲明他们对游戏结果的影响差不多。一血的获得情况与获胜有正相关但是相关性不如击杀英雄数量明显。经济差与经历差对于游戏胜负的影响较小。击杀野怪数量对游戏胜负的影响并不大。plt.figure(figsize(18,14)sns.heatmap(round(x.corr(),2),cmapBlues,annotTrue)plt.show()同时我们画出各个特征之间的相关性热力图颜色越深代表特征之间相关性越强我
14、们剔除那些相关性较强的冗余特征。#去除冗余特征drop_colsredAvgLevel,blueAvgLevelx.drop(drop_cols,axis1,inplaceTrue)sns.set(stylewhitegrid,palettemuted)#构造两个新特征xwardsPlacedDiffxblueWardsPlaced-xredWardsPlacedxwardsDestroyedDiffxblueWardsDestroyed-xredWardsDestroyeddataxblueWardsPlaced,blueWardsDestroyed,wardsPlacedDiff,ward
15、sDestroyedDiff.sample(1000)data_std(data-data.mean()/data.std()datapd.concat(y,data_std,axis1)datapd.melt(data,id_varsblueWins,var_nameFeatures,value_nameValues)plt.figure(figsize(10,6)sns.swarmplot(xFeatures,yValues,hueblueWins,datadata)plt.xticks(rotation45)plt.show()我们画出了插眼数量的散点图发现不存在插眼数量与游戏胜负间的显
16、著规律。猜想由于钻石分段以上在哪插眼在哪好排眼都是套路所以数据中前特别钟插眼数拔眼数对游戏的影响不大。所以我们暂时先把这些特征去掉。#去除以及眼位相关的特征drop_colsblueWardsPlaced,blueWardsDestroyed,wardsPlacedDiff,wardsDestroyedDiff,redWardsPlaced,redWardsDestroyedx.drop(drop_cols,axis1,inplaceTrue)xkillsDiffxblueKills-xblueDeathsxassistsDiffxblueAssists-xredAssistsxblueKil
17、ls,blueDeaths,blueAssists,killsDiff,assistsDiff,redAssists.hist(figsize(12,10),bins20)plt.show()我们发现击杀、死亡与助攻数的数据分布差异不大。但是击杀减去死亡、助攻减去死亡的分布与原分布差异很大因此我们新构造这么两个特征。dataxblueKills,blueDeaths,blueAssists,killsDiff,assistsDiff,redAssists.sample(1000)data_std(data-data.mean()/data.std()datapd.concat(y,data_s
18、td,axis1)datapd.melt(data,id_varsblueWins,var_nameFeatures,value_nameValues)plt.figure(figsize(10,6)sns.swarmplot(xFeatures,yValues,hueblueWins,datadata)plt.xticks(rotation45)plt.show()从上图我们可以发现击杀数与死亡数与助攻数和我们构造的特征对数据都有较好的分类才能。datapd.concat(y,x,axis1).sample(500)sns.pairplot(data,varsblueKills,blueDe
19、aths,blueAssists,killsDiff,assistsDiff,redAssists,hueblueWins)plt.show()一些特征两两组合后对于数据的划分才能也有提升。xdragonsDiffxblueDragons-xredDragonsxheraldsDiffxblueHeralds-xredHeraldsxeliteDiffxblueEliteMonsters-xredEliteMonstersdatapd.concat(y,x,axis1)eliteGroupdata.groupby(eliteDiff)blueWins.mean()dragonGroupdata
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机器学习算法七- 基于LightGBM的分类预测基于英雄联盟10分钟数据判断红蓝方胜负 机器 学习 算法 基于 LightGBM 分类 预测 英雄 联盟 10 分钟 数据 判断 红蓝方 胜负
限制150内