Python预测NBA比赛结果

2018-07-27 18:13:01 浏览数 (7983)

本文转载至知乎ID:Charles(白露未晞)知乎个人专栏

下载W3Cschool手机App,0基础随时随地学编程>>戳此了解

导语

利用Python简单地预测一下NBA比赛结果。。。

这大概就叫蹭热度吧。。。

毕竟貌似今天朋友圈都在刷NBA相关的内容。。。

虽然我并不能看懂。。。

但这并不妨碍我瞎预测一波。。。

So,

以下内容纯属瞎玩,如有雷同,算我倒霉。。。

NBA忠实球迷请自动忽略不好结果。。。


相关文件

网盘下载链接: https://pan.baidu.com/s/1EwdkonbYY54AxnIgqx9yYA

密码: 1n93


主要思路

(1)数据选取

获取数据的链接为:

https://www.basketball-reference.com/

获取的数据内容为:

每支队伍平均每场比赛的表现统计;

每支队伍的对手平均每场比赛的表现统计;

综合统计数据;

2016-2017年NBA常规赛以及季后赛的每场比赛的比赛数据;

2017-2018年NBA的常规赛以及季后赛的比赛安排。

(2)建模思路

主要利用数据内容的前四项来评估球队的战斗力。

利用数据内容的第五项也就是比赛安排来预测每场比赛的获胜队伍。

利用方式为:

数据内容的前三项以及根据数据内容的第四项计算的Elo等级分作为每支队伍的特征向量。

Elo等级分介绍(相关文件中有):

为方便起见,假设获胜方提高的Elo等级分与失败方降低的Elo等级分数值相等。

另外,为了体现主场优势,主场队伍的Elo等级分在原有基础上增加100。

(3)代码流程

数据初始化;

计算每支队伍的Elo等级分(初始值1600);

基于数据内容前三项和Elo等级分建立2016-2017年常规赛和季后赛中每场比赛的数据集;

使用sklearn中的LogisticRegression函数建立回归模型;

利用训练好的模型对17-18年常规赛和季后赛的比赛结果进行预测;

将预测结果保存到17-18Result.CSV文件中。


开发工具

Python版本:3.5.4

相关模块:

pandas模块、numpy模块、sklearn模块以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。


使用演示

在cmd窗口运行Analysis_NBA_Data.py文件即可:

结果:


更多

文章的初衷是为了让公众号推送的关于Python的小项目涉及的应用领域更加丰富多彩。从而激发部分Python初学者的学习热情,仅此而已。

这篇文章的技术含量并不高,模型简单,数据处理方式也比较随意。。。

可以优化的地方大概包括:

增加训练数据(如多利用几年数据);

优化训练模型(如sklearn中其他机器学习方法或者利用深度学习框架搭建相应的网络进行模型训练)。