NBA 比赛结果预测
一、项目背景
1.数据分析
数据分析是一个检查、清理、转换和建模数据的过程,其目标是发现有用的信息、得出结论并支持决策制定。数据分析具有多个方面和方法,包括各种名称下的多种技术,并用于不同的商业、科学和社会科学领域。
在当今的商业世界中,数据分析在使决策更加科学和帮助企业更有效地运作方面发挥了作用。
2.数据分析流程
-
数据采集
-
数据存储
-
数据提取
-
数据挖掘
-
数据分析
-
数据展示
-
数据应用
3.Jupyter
Jupyter是一个非营利组织,旨在“为数十种编程语言的交互式计算开发开源软件,开放标准和服务”。2014年由Fernando Pérez从IPython中衍生出来,Jupyter支持几十种语言的执行环境。
Jupyter项目开发并支持交互式计算产品Jupyter Notebook(文件格式是.ipynb文件)、JupyterHub和JupyterLab。
4.数据详情
数据来源:Basketball Statistics & History of Every Team & NBA and WNBA Players | Basketball-Reference.com
以下表格来自Seasons导航栏下的summary,下拉至Per Game Stats数据表,选择Share & Export下的Get table as CSV (for Excel),选择Team、Opponent获得两张表。
2021-2022 Team Per Game Stats.csv 每支队伍在每场比赛中的表现统计,各字段含义如下:
字段 | 含义 |
---|---|
Rk | 排名 |
Team | 队伍 |
G | 参与的比赛场数 |
MP | 平均每场比赛进行的时间 |
FG | 投球命中次数 |
FGA | 投射次数 |
FG% | 投球命中次数 |
3P | 三分球命中次数 |
3PA | 三分球投射次数 |
3P% | 三分球命中率 |
2P | 二分球命中次数 |
2PA | 二分球投射次数 |
2P% | 二分球命中率 |
FT | 罚球命中次数 |
FTA | 罚球投射次数 |
FT% | 罚球命中率 |
ORB | 进攻篮板球 |
DRB | 防守篮板球 |
TRB | 篮板球总数 |
AST | 助攻 |
STL | 抢断 |
BLK | 封盖 |
TOV | 失误 |
PF | 个犯 |
PTS | 得分 |
2021-2022Opponent Per Game Stats.csv 每支队伍在每场比赛中遇到的对手表现统计,各字段含义同上。
继续下拉至Advanced Stats数据表,选择Share & Export下的Get table as CSV (for Excel)
2021-2022Miscellaneous Stats.csv:每支队伍的综合统计数据,各字段含义如下:
数据项 | 数据含义 |
---|---|
Rk (Rank) | 排名 |
Age | 队员的平均年龄 |
W (Wins) | 胜利次数 |
L (Losses) | 失败次数 |
PW (Pythagorean wins) | 基于毕达哥拉斯理论计算的赢的概率 |
PL (Pythagorean losses) | 基于毕达哥拉斯理论计算的输的概率 |
MOV (Margin of Victory) | 赢球次数的平均间隔 |
SOS (Strength of Schedule) | 用以评判对手选择与其球队或是其他球队的难易程度对比,0 为平均线,可以为正负数 |
SRS (Simple Rating System) | 简易评级系统,根据他们的积分差异对球队进行排名 |
ORtg (Offensive Rating) | 每 100 个比赛回合中的进攻比例 |
DRtg (Defensive Rating) | 每 100 个比赛回合中的防守比例 |
NRtg (Net Rating) | 进攻效率ORtg-防守效率DRtg |
Pace (Pace Factor) | 每 48 分钟内大概会进行多少个回合 |
FTr (Free Throw Attempt Rate) | 罚球次数所占投射次数的比例 |
3PAr (3-Point Attempt Rate) | 三分球投射占投射次数的比例 |
TS% (True Shooting Percentage) | 二分球、三分球和罚球的总共命中率 |
eFG% (Effective Field Goal Percentage) | 有效的投射百分比(含二分球、三分球) |
TOV% (Turnover Percentage) | 每 100 场比赛中失误的比例 |
ORB% (Offensive Rebound Percentage) | 球队中平均每个人的进攻篮板的比例 |
FT/FGA | 罚球所占投射的比例 |
eFG% (Opponent Effective Field Goal Percentage) | 对手投射命中比例 |
TOV% (Opponent Turnover Percentage) | 对手的失误比例 |
DRB% (Defensive Rebound Percentage) | 球队平均每个球员的防守篮板比例 |
FT/FGA (Opponent Free Throws Per Field Goal Attempt) | 对手的罚球次数占投射次数的比例 |
Arena | 比赛场;竞技场 |
Attend. | 出席观众人数 |
Attend./G | 平均每场比赛的出席观众人数 |
以下两张表数据来源于Seasons导航栏下的Schedule and Results,选择Share & Export下的Get table as CSV (for Excel)。
2021-2022_result.csv 每场比赛的数据,其中包括三个字段:
字段 | 含义 |
---|---|
WTeam | 比赛胜利队伍 |
LTeam | 失败队伍 |
WLoc | 胜利队伍一方所在的为主场或是客场 |
2022-2023_schedule.csv 比赛的安排,其中包括两个字段:
字段 | 含义 |
---|---|
Vteam | 客场作战队伍 |
Hteam | 主场作战队伍 |
二、项目目标
1.主要目标
利用训练好的模型在2022-2023年的比赛数据中进行预测,对每一场新的比赛进行胜负方判断,最好能返回胜方胜利的概率。
2.目标分解
-
读取数据
-
分析内容
-
构建特征
-
建立模型
-
训练样本
-
预测结果
三、技术选型
1.问题:必须使用Jupyter Notebook吗?
推荐使用,这是数据分析下通用工具,建议掌握。
2.问题:机器学习使用什么工具?
推荐使用sklearn,sklearn是基于 Python 语言的机器学习工具,Sklea是处理机器学习 (有监督学习和无监督学习) 的包。
它建立在 NumPy, SciPy, Pandas 和 Matplotlib 之上,其主要集成了数据预处理、数据特征选择,sklearn有六个任务模块和一个数据引入模块:
-
有监督学习的分类任务
-
有监督学习的回归任务
-
无监督学习的聚类任务
-
无监督学习的降维任务
-
数据预处理任务
-
模型选择任务
-
数据引入
官网网站:scikit-learn: machine learning in Python — scikit-learn 1.1.3 documentation
安装
pip install -U scikit-learn
四、课堂要求
1.提交项目结构
main.ipynb 数据分析文件
2.标注核心算法函数位置
# 逻辑回归 位于main.ipynb文件 第5个代码块中
from sklearn import linear_model
model = linear_model.LogisticRegression(max_iter=15000)
model.fit(X, y)