基于统计机器学习的DOTA2阵容的最优抉择.doc





《基于统计机器学习的DOTA2阵容的最优抉择.doc》由会员分享,可在线阅读,更多相关《基于统计机器学习的DOTA2阵容的最优抉择.doc(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 本科毕业设计(论文) 基于统计机器学习的DOTA2阵容的最优抉择 The optimal choice of DOTA2 lineup based on statistical machine learning 院 (系)计算机学院专 业软件工程班 级16软件工程4班学 号16210120402学生姓名何俊杰指导教师任浩提交日期2020年 4月1日毕业设计(论文)原创性声明本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行的设计(研究)工作及取得的成果,论文中引用他人的文献、数据、图件、资料均已明确标注出,论文中的结论和结果为本人独立完成,不包含他人已经发表或撰写的作
2、品及成果。对本文的研究作出贡献的个人和集体,均已在论文中作了明确的说明。本人完全意识到本声明的法律结果由本人承担。毕业论文作者(签字): 签字日期: 年 月 日成绩评定成绩项论文成绩(百分制)折合比例实得成绩(折合分)指导教师成绩30%评阅教师成绩20%答辩成绩50%总评成绩注:毕业设计(论文)成绩按百分制评定。答辩成绩不及格的(评分低于60分的),则该毕业设计(论文)总评成绩为答辩成绩。内容摘要论文首先详细介绍了DOTA2以及统计机器学习的背景以及其的现状,然后讨论了用统计机器学习方法探索DOTA2最佳阵容的设计目标,项目要求和整体项目设计,以及展开项目的具体设计和开发的全面讨论。本文项目功
3、能基于Python的Beautiful Soup、Selenium、Matplotlib等库,编写对应代码而实现了一个DOTA2最佳阵容抉择的项目。项目包括爬虫、统计机器学习等重要功能。关键词:Python、爬虫、数据处理、统计机器学习AbstractThe paper firstly introduces the background and current situation of DOTA2 and statistical machine learning in detail, then discusses the design objectives, project requireme
4、nts and overall project design of DOTA2 best team by statistical machine learning method, as well as a comprehensive discussion on the specific design and development of the project.Based on Pythons Beautiful Soup, Selenium, Matplotlib and other libraries, this article implements a best-team choice
5、for DOTA2 by writing corresponding code. The project includes important functions such as crawler and statistical machine learning.Key words: Python, crawler, data processing, statistical machine learning目 录第一章 绪论11.1 课题背景及意义11.2 国内外研究现状21.3 课题研究内容3第二章 开发技术与工具42.1 Python简介42.2 BeautifulSoup简介42.3 Se
6、lenium简介52.4 线性回归方法简介62.5 K-Means方法简介7第三章 项目分析与设计83.1 可行性分析83.1.1 技术可行性83.2 项目总体设计8第四章 项目实现94.1 利用BeautifulSoup爬取DOTAMAX网站的数据94.2 利用Selenium模拟鼠标悬停收集DOTA2官网的数据104.3 对数据画出相关性矩阵、散点图并进行分析114.4 利用线性回归预测国际邀请赛的强势英雄144.5 利用聚类分析判断每个位置的英雄的优劣性16第五章 项目测试205.1 测试结果分析20第六章 总结与展望216.1 总结216.1 展望21参 考 文 献22附 录23致 谢
7、24广东东软学院本科生毕业设计(论文)第一章 绪论1.1 课题背景及意义DOTA2作为一个拥有The International(以下称国际邀请赛)赛事的全球奖金最高的比赛,是一个举世皆知的电子竞技项目。至今,国际邀请赛已经成功举办了9次,第1届仅有1,600,000美金的总奖金,但到了第9届,已经达到33,394,860美金的总奖金,9年的总增长率为2087.17875%,可见国际邀请赛的影响力之广、电子竞技项目的生命力之强、该项目的成长性之迅速。在中国里,电子竞技运动(E-Sport)日渐成熟,从2003年被中国国家体育总局列为中国正式开展的第99个体育项目之后,中国有很多青年也投身于这个
8、行业。在国际上,由于职业选手日渐变多,所以赛事体制也越来越完善。由于在比赛中要经过BP环节和正式比赛环节,需要很多即时的决断与重大的团队决策,而且在大脑高速运转的情况下,反应力也不能下降,因此其比赛强度得到很多传统体育行业及其他行业的人的赞许和认可,其中代表是NBA球星林书豪,其称DOTA2为电子竞技界的NBA。DOTA2是一个ARTS游戏(multiplayer Action Realtime Strategy Game),中文翻译是多人动作即时战略类游戏,跟一般认知的MOBA游戏(Multiplayer Online Battle Arena),中文翻译是多人在线战术竞技游戏,是完全不一样
9、的,DOTA2偏向战略,所以游戏里面是有非常多的变数,再加上这个游戏的流行度与奖金池之深,很值得我去运用我所学过的知识去研究这个游戏。在DOTA2里面有一个非常著名的外国职业选手叫Notail,他拿了两届国际邀请赛的冠军,可谓是“前无古人,后无来者”,但他接受采访的时候,也很坦诚的表达出:“到现在还没有人找到这个游戏的正确答案,因为这里面还有太多能发掘的东西,而我想成为第一个能找到这个游戏的正确答案的人。”有很多人就算目标不是成为职业选手,也会受其影响力而参与进DOTA2,就跟喜欢NBA的学生平时喜欢打篮球是一样的,玩家基数多的情况下,自然就会产生大量的比赛数据。职业选手会通过经验去简单分析当
10、前版本的趋势,但更好的是要用到更好的方法去对数据进行处理并分析。因为国内大多数DOTA2玩家都暂不具备该能力,所以研究本课题的意义在于,我将所学过的大数据中的统计机器学习方法,去研究DOTA2阵容的最优抉择。1.2 国内外研究现状Python在多年前成为卡耐基梅隆大学(Carnegie Mellon University)、加州大学伯克利分校(University of California, Berkeley)、哈佛大学(Harvard University)、麻省理工学院(Massachusetts Institute of Technology)等国外很多大学的计算机专业的程序设计入门语
11、言。目前国内也逐渐开设了Python程序设计课程,Python同时是一门免费而且开源的编程语言,拥有很多功能非常强大的标准库和扩展库,而且这些库都是只要安装了之后,可以随时调用出来使用的。而且Python是一门在国外非常热门的编程编程语言, PYPL是通过谷歌上的搜索频率来创建的流行的编程语言索引,只要该编程语言在谷歌上搜索越多,该编程语言就会被认为流行语言,所以PYPL排行榜是非常的有参考性的。截止到2020年,4月份,在PYPL上,Python以30.61%位居榜首,与上一期的排行榜对比,增长率为3.9%。网络爬虫则是使用Python及其标准库和扩展库、然后根据网页的特性,编写一系列程序的
12、一种技术。使用爬虫需要安装所需要的标准库和扩展库,而且还要学习一系列的网页相关的知识,并根据网页的特点,去编写对应的程序,例如要学习HTTP的基本原理、网页的组成、网页的结构、节点树及节点间的关系、UPI和URL、超文本、HTTP和HTTPS、HTTP的请求过程、网页的请求和响应、静态网页和动态网页、代理的作用、爬虫的代理、数据存储、Ajax数据爬取、动态渲染页面爬取、验证码的识别、模拟登陆等知识。而验证码的识别往往是最困难的,国外最新的深度学习中的PyTorch技术能识别滑动验证码的缺口,总的来说有两种方法,第一种算法是:生成一系列目标所在位置的候选框,然后再对这些框选出来的结果进行样本分类
13、,这算法涉及到深度的卷积神经网络的算法架构,所以准确率会非常搞。第二种算法是:不需要产生第一种算法里面的候选框,直接将目标定位和分类的问题转化为回归问题,因为只需要用到回归算法,所以架构相比第一种方法简单,但准确率会比第一种方法低。这种最新的技术大体上需要以下几步,首先准备数据,训练深度学习模型,训练模型并进行缺口标注,处理完数据之后就对数据进行初始化,初始化完成就预载一些预训练模型,安装必须的库,如PyTorch、TensorBoard之类的扩展库,当准备好之后,就可以开始训练刚刚初始化之后的数据集,最后进行测试,做到这个步骤,就可以识别滑动验证码的缺口了。统计机器学习是入门级别的数据处理的
14、一种方法,但更侧重于解释变量之间的关系,机器学习侧重于做出预测,但是大多数机器学习算法缺乏可解释性,所以很难证明数据中存在的关系。机器学习是基于统计学的,机器学习用的是统计的框架,机器学习涉及到很大量的数据,数据也必须要用到统计学的框架来进行描述。所以学习机器学习的基础是要掌握统计学习。统计机器学习的线性回归跟统计学的线性回归是非常相似的,但只有对统计学的概念有所了解,才能学习机器学习并进行运用,以避免模型的过拟合问题或者会得出一些看起来貌似合理但实际上是错误的理论。1.3 课题研究内容在DOTA2中,影响游戏走向的因素有非常多,版本的更新导致的英雄削弱与增强、英雄的技能特性、经济、线权、肉山
15、盾的控制权、控符率、经济的差距,由于其中的经济、线权、肉山盾的控制权、控符率、团队竞技属于比赛中的实时变动的数据,即为动态数据,所以该课题不选择对此进行研究,本课题研究的是那些静态的数据,即比赛后结算出来的数据、英雄的技能特性该两项数据,而这两项数据也会各自细分成很多类别的数据,均为静态的数据,本课题主要是针对这些静态的数据,发掘其中的相关性,并做出对应该数据的分析。因此,本课题研究内容有:1、使用Python及其相关库,利用爬虫的知识、网页的知识在数据网站上爬取第九届国际邀请赛之后、第十届国际邀请赛之前的所有DOTA2职业联赛的数据。数据包含有比赛场数、胜率、KDA、杀、死、助、正反补总数、
16、反补数量、金钱/分钟、经验/分钟、缠绕、眩晕、治疗、减速、沉默、爆发伤害、持续伤害等该数据并进行整理;2、根据其比赛场数、胜率、KDA、击杀、死亡、助攻、正反补、反补数、金钱/分钟、经验/分钟进行初步的分析,寻找合理的统计机器学习方法去进行研究其中的关系,例如发掘胜率与击杀数之间的内在关系、死亡数与正反补数的关系等,得出并得出分析的结果;3、再结合每个英雄的特性,例如是否带有缠绕、是否带有眩晕、是否带有治疗、是否带有减速、是否带有沉默、是否带有爆发伤害、是否带有持续伤害,再将该数据与比赛场数、胜率、KDA、击杀、死亡、助攻、正反补、反补数、金钱/分钟、经验/分钟结合一起进行一个综合的相关性分析
17、;4、对上述两点得出的一系列的相关性分析、统计机器学习分析做出相对应的评价,解释其中的关系;31第二章 开发技术与工具 2.1 Python简介Python作为一门解释型、编译性、交互式、面向对象的脚本语言,其设计具有很强的可读性,相比其他语言经常会使用一些特别指定的关键字,指定的标点符号之类的标志,Python具有更加简单、易懂、自由的语法结构。因此,其具有以下优点:编程语言里入门级别的简单、容易学习、免费开源、高层次语言、具备可移植性、具备解释性、面向对象、具备可扩展性、拥有庞大而丰富的库、规范的代码。编程语言里入门级别的简单:相信大家都有考大学四六级英语证书的经验,而Python的程序阅
18、读起来就跟四六级英语的阅读理解一样的简单,对比起其他语言,不会有很多特殊指定的关键字。就例如入门级别的,打印一行“Hello World”,只需要一行代码就可以了,而另外的主流语言例如C+、Java,则需要3行以上的代码。由于有Pandas这个库的存在,Python对csv文件的操作也很方便。容易学习:因为Python有相比较于其他语言,比较简单的语法结构。免费开源:Python是自由/开放源码软件之一,可以自由地阅读源代码并进行改动,因此有很多业界的大牛会不断增加其功能高层次语言:用Python编写程序的时候,不需要去像C语言一样,考虑到程序要使用的内存这一类底层的细节。具备可移植性:Pyt
19、hon程序可以在各种系统上运行,其中最常用的就是在Windows和Linux上面使用。解释性:在一台电脑上编写好的一个程序,要在第二台电脑上用的时候,只需要在第二台电脑上安装所需要的库和工具,就能正常使用。拥有庞大而丰富的库:本文项目的内容,研究有很多用到库的时候,主要是用了BeautifulSoup、Selenim、Matplotlib这三个库,下文会详细地进行介绍。规范的代码:由于命名的规则没有其他语言那么多限制,而且强制缩进也使得本文的代码很容易读懂。2.2 BeautifulSoup简介BeautifulSoup根据网页的结构和属性等特性解析网页,是一个非常强大的解析工具,主要用来做爬
20、虫,以便提取网页中的元素。本质上来说,BeautifulSoup是Python的一个HTML、XML的解析库,提供导航、搜索、修改分析树等功能。使用的时候,只需要去分析网页的JavaScript代码,HTML代码,分析CSS结构,就能编写程序提取其中的元素。然后要注意编码格式,BeautifulSoup提取出来的文本默认是UTF-8格式,但本文项目主要是以csv的形式去进行存储,因此要将UTF-8转换成ANSI格式。BeautifulSoup提取数据的流程主要有以下几种方法:1、使用节点选择器,直接调用节点的名称就可以选择节点元素,再调用String属性就能得到节点内的文本,用该方法提取的时候
21、,有嵌套选择、关联选择的进阶用法;2、使用方法选择器,不根据属性来选择,而是调用BeautifulSoup的find()方法传入属性或文本,从而根据条件查找符合条件的元素;3、使用CSS选择器,如果对Web开发比较熟悉的,用这个方法的效率是相对来说会高过前两种方法的,调用select()方法,传入相应的CSS选择器,就能提取我们想要的东西。可以嵌套选择、获取属性进行选择、获取文本进行选择。使用BeautifulSoup的时候需要注意的是:使用节点选择器时,节点选择速度快但是筛选功能弱;使用方法选择器时,查询匹配单个结果应该使用find()方法,查询多个结果的时候应该使用find_all()方法
22、;使用CSS选择器时,对CSS选择器熟悉的话,务必要用select()方法,因为效率会前两种方法高;2.3 Selenium简介Selenium是一个自动化测试工具,利用它可以模拟鼠标点击、下拉等动作,只要是能看到的,都能用Selenium这个工具爬取下来。使用Selenium之前,需要安装浏览器驱动,建议是Chrome浏览器,并安装对应版本的ChromeDriver这个驱动。Selenium功能强大之处有以下几点:1、可以声明浏览器的对象,除了Chrome,还支持Firefox、Edge等,手机端的浏览器有Android、BlackBerry等,同时也支持编写自动化工具的时候,经常会使用到的
23、无界面浏览器PhantomJS;2、访问页面的时候只需要参数传入链接URL,用get()方法去请求页面;3、查找单个节点的时候,我们可以用find_element ()去获取,并进行一些对应该节点的模拟鼠标点击、鼠标下拉、键盘输入、填写表单等操作。查找多个节点的时候,只需要把find_element ()改为find_elements()即可;4、对节点进行交互,即模拟鼠标、键盘等操作,例如对文字进行输入、删除的时候可以用send_keys()、clear()等方法,模拟点击的时候用click()方法,获取文本的时候用text()、提交表格的时候用submit()、获取CSS属性的值的时候用v
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 统计 机器 学习 DOTA2 阵容 最优 抉择

限制150内