基于Pyspider框架的NBA比赛预测系统

 2022-01-17 23:36:54

论文总字数:26700字

目 录

1 绪论 1

1.1 研究背景 1

1.2 研究发展及现状 1

2 关键技术介绍 3

2.1 Python 3

2.2 PySpider简介 3

2.3 逻辑回归 5

2.4 ELO等级分 6

2.5 Java 7

3 可行性分析和需求分析 7

3.1 可行性分析 8

3.2 需求分析 8

3.2.1 系统功能性需求分析 8

3.2.2 系统非功能性需求分析 11

4 系统设计 11

4.1 总体设计 11

4.2 前台设计 11

4.3 后台设计 13

4.3.1 数据爬取模块 13

4.3.2 特征处理模块 13

4.3.3 预测模块 14

5 系统实现 15

5.1 前台实现 15

5.1.1 主界面的实现 15

5.1.2 预测查询界面的实现 16

5.1.3 历史数据界面的实现 16

5.1.4 战绩查询界面的实现 17

5.2 后台实现 17

5.2.1 数据爬取模块的实现 17

5.2.2 特征处理模块的实现 21

5.2.3 预测模块的实现 25

5.2.4 预测结果分析 27

6 总 结 28

参考文献 29

致谢 30

基于PySpider框架的NBA比赛预测系统

徐梓杰

,China

ABSTRACT:NBA is one of the four major sports leagues in North America, which attracts global sports enthusiasts' eyeballs. This paper designs and implements a NBA competition prediction system based on the PySpider crawler framework. First of all, it crawls the basic data of all NBA teams from hoopchina.com in the last three years through the PySpider crawler framework and calculates high order data of each team according to the basic data. Secondly, it analyzes the obtained game data ,calculates the ELO scores of each team, gets the characteristic expression of each team’s status in each game, and uses logistic regression to learn the relationship between every game and the winning team, and then the 2017 - 2018 season results are predicted; finally, it provides a user-friendly system interface by Java Swing.

Key words:Python; PySpider; Crawler; Logistic Regression Model; ELO scores.

1 绪论

1.1 研究背景

美国男子职业篮球联赛,即美职篮,简称NBA(National Basketball Association),是北美四大职业体育联赛之一,包括东部赛区和西部赛区,自1946年6月6日在纽约成立以来已经发展成为一个集体育竞技、潮流文化和娱乐消费于一体的商业联盟。NBA比赛按照比赛性质可以分为3种,分别是常规赛、季前赛和季后赛。季前赛往往是推广NBA市场的表演赛,经常在欧洲、中国等非北美地区举行,比赛结果不计入排名,通常于10月中旬开始;常规赛采用主客场制,每年10月底开始,每支球队打完82场比赛,4月中旬结束,各自分区排名前八的球队获得进入季后赛的资格;季后赛采用七局四胜的淘汰制,角逐出东区冠军和西区冠军,最终由这两支队伍来争夺总冠军。1987年,中央电视台第一次录播NBA让国内篮球爱好者对NBA有了初步了解,而王治郅、巴特尔、姚明和易建联等运动员的加入又让这个体育联盟被越来越多的中国人所熟知。随着2008年北京奥运会的举行以及国家对全民运动的呼吁支持,人们对于NBA这个世界最高水平职业篮球联赛的关注越来越高。

NBA集中了全世界最优秀的篮球运动员,每支球队运作的薪资空间都有工资帽限制,故各支球队的竞技水平相差不大,每场比赛都充满无限可能,也因此预测两支球队比赛的胜负成为了体育媒体和球迷津津乐道的事情。但是,绝大多数球迷都是根据自己的主观臆断,这种臆断往往受个人对于某支球队或某个球员甚至某个城市偏爱的影响太大,缺乏一定的科学性和合理性。因此,人们需要一种合理的预测方法。

1.2 研究发展及现状

自从NBA诞生以来,专家学者对NBA比赛预测的研究就没停止过。二十世纪五十年代,NBA的影响力在全球范围迅速提高,但在当时统计学家们并不需要处理大量的数据,一方面是因为当时的数据收集工作并不完善,可供专家学者以及当时的教练分析的数据并不多;另一方面是因为当时比赛规则的不完善。他们往往偏向于利用简单的统计学原理,对有记录的比赛技术特征进行简单的组合,通过计算得到球队的进攻能力和防守能力,从而得到球队的综合能力;然后,根据综合能力来排序,仅仅利用球队能力排名对比赛最终的胜负进行预测;因此,这种方法预测的正确率往往低于后期以机器学习方法为基础分析预测的正确率。

在进入20世纪70年代以来,NBA和ABA(American Basketball Association)合并,球场上的篮球规则逐渐成熟,比赛数据记录的开始规范化。与此同时,计算机技术不断发展和普及,机器学习领域也取得了较明显的成果,关注体育领域的研究人员开始寻找更加合适更加高效的方法运用到大量的数据集中,对NBA赛事进行预测。例如Bhandari等人在1996年开发了基于PC机的名为Advanced Scout的应用软件,将NBA历年的历史数据带入到数据挖掘和机器学习领域,一些球队俱乐部的职业经理人和教练可以从数据中发现比赛的一些有趣的规律[1]

进入二十一世纪以来,各种机器学习算法开始被越来越多的研究者应用在NBA比赛预测中。他们利用决策树模型对已有的NBA历史数据集进行建模,然后再对比赛预测;但是他们预测结果的正确率相对于以前的算法并没有得到显著的提高。这是因为决策树模型的训练需要大量的数据,否则会造成过度拟合,而近60年的赛季数据的积累还是不够多,并不足够支持训练出最高效的模型[2]

Bernerd和Earl等人在2011年收集了620场NBA比赛的统计数据并利用这些数据训练了径前基(Radial Basis)和广义回归神经网络(Generalized Regression Neural Network)等多种神经网络,他们利用贝叶斯信度网络和概率神经网络融合对神经网络的融合进行检测,最后得到的结论是最好的网络能够正确预测获胜球队的概率是74.33%,这高于当时篮球领域众多专家预测正确的平均概率是68.87%[3]

Beckler和Papamichael等人利用三种流行的数据挖掘技术即人工神经网络(Artificial Neural Network)、决策树(Decision Tree)和支持向量机(Support Vector Machine)和8年的NBA数据来评估不同方法的预测能力。最后得出,支持向量机模型可以对篮球赛事进行预测,但是支持向量机并不能输出比赛走势或胜负的概率值,而只是给出一个胜负的判断,使得模型对预测判断的结果很难进行解释,而决策树模型比人工神经网络得到的预测结果精度要高得多[4]

Miljkovic等人尝试着利用朴素贝叶斯(Naive Bayesian)对比赛进行预测,从而开发出一个NBA博彩系统。最后得到的结论是朴素贝叶斯方法明显无法适应比赛预测这种场景。因为比赛中球员以及球员的每个动作之间的影响非常大,即各个特征之间都有很大的依赖关系,这一点突破了朴素贝叶斯方法各个特征之间的独立性假设,故得到的预测结果和实际差别很大,最终对2009-2010赛季778场常规赛进行了评估,正确预测了大约67%场比赛的获胜者[5]

最近几年,许多学者开始使用各种概率图模型模拟NBA比赛的走势,并对比赛结果做出相应的预测,他们的工作主要是比较比赛的模拟趋势和真正比赛走势之间的差异,并给出动态模拟的评价的度量,而并不对比赛最终胜负预测进行深入的探究和比较。例如,在被誉为未来运动数据分析的诞生地——2015年的MIT斯隆峰会上,篮球运动员、媒体评论员和数据分析人士对主题为数据在NBA比赛中的应用的研究进行了一番讨论。其中的一项研究成果便是利用概率图像模型来模拟篮球比赛进行建模,该研究将比赛的进展视为一个图表,每个节点都是运动员在场上的网络结构,如他们的动作、事件等,边缘表示比赛中可能发生的流动,对阵双方根据不同阵容在该模型里会得到很好的模拟。利用该模型来模拟2013-2014赛季常规赛30支球队的比赛,最后得到的结论是该模型可以合理地模拟一场篮球比赛的走向,但该项研究并没有给出模拟结果的正确率[6]

华中科技大学牛兆捷的研究指出目前篮球比赛的预测主要的观察对象是球队,预测模型也是依据球队建模,而没有人以球员为考察对象。该研究提出了一个混合的模型:首先,对比赛中的攻防情况和队员能力值建立合理的因果关系,从队员的能力值级别上进行建模,利用得分、命中率、篮板、抢断、失误等多个数据指标去对球员的能力进行评估,建立较为复杂的贝叶斯网络模型,考虑了球员上场时间、发挥等因素,并使用EM(Expectation Maximization)算法对球员能力参数值进行学习;利用潜在变量建立一个比赛模型,得出在赛中,对手得分机会的期望值;利用一支团队的成员能力与得分之间的概率图模型,建立一个得分模型,得出不同队伍将得分机会转化为得分的期望;将三者结合起来,就可以预测比赛的得分,该方法并不是单纯地直接给出胜负结果,而是利用概率统计的方法通过对历史详细战报进行分析,通过建立合理的概率图模型,对球队球员的各项能力值进行评估,并对比赛中每一次攻防过程中的得分情况进行预测[7]。在对三个赛季的常规赛进行实现后,最终得到的得分预测准确率约为65%-70%,胜负判断的预测正确率显然会大于这一概率,不过这在原文并未讨论。

总体来说,现有的预测研究大都对NBA赛场上的技术统计进行简单整合,然后利用单一的数据挖掘或统计学习方法在数据集上进行训练,而很少有利用多种复杂算法的处理技术。张振宇利用PageRank算法构造球队之间的投票矩阵,用幂方法求解投票矩阵得到各个球队量化的能力值并利用K-means非监督聚类方法对技术特征进行离散化处理来解决数据过度拟合的问题,最终利用最大熵原理训练出符合NBA数据的NBAME(NBA Maximum Entropy)模型,该模型对2007-2015季后赛的预测正确率在60%-75%之间,综合来看要好于单一的处理算法如朴素贝叶斯和BP(Back Propagation)神经网络[8]

剩余内容已隐藏,请支付后下载全文,论文总字数:26700字

相关图片展示:

您需要先支付 80元 才能查看全部内容!立即支付

该课题毕业论文、开题报告、外文翻译、程序设计、图纸设计等资料可联系客服协助查找;