
该项目旨在通过关注高级AI预测模型而不是广泛的数据收集和管理来简化预测NBA游戏结果的过程。与我以前的项目NBA投注不同,该项目旨在创建一个通过广泛的数据收集来预测NBA游戏的综合功能,该项目简化了过程。尽管以前的方法受益于各种行业衍生的指标,但管理数据收集的成本和复杂性太高。该项目着重于核心数据集,例如逐场播放数据,并利用深度学习和Genai来预测游戏成果。
该项目目前处于开发的早期阶段,其基本预测引擎使用了简单的模型,例如Ridge回归,XGBoost和基本MLP。预测引擎仅限于基本的游戏得分预测和获胜百分比。 Web应用程序提供了一个简单的接口,用于显示所选日期的游戏以及当前的分数和预测。幸运的是,这与项目应该变得像应该变得一样复杂。目的是逐渐将数据库更新程序的大多数部分和游戏API逻辑的一部分集成到单个预测引擎中。这将允许更简化的过程和功能更强大的预测引擎。

该项目围绕一些关键组成部分建立:
数据库更新程序:此组件负责使用最新的NBA游戏数据更新数据库。它从NBA Stats API中获取数据,执行ETL操作,生成功能,创建预测并将数据存储在SQLITE数据库中。它由一些模块组成:
database_update_manager.py :编排整个过程的主模块。schedule.py :从NBA API获取时间表并更新数据库。pbp.py :获取游戏的逐游戏数据并更新数据库。game_states.py :逐步播放数据以生成游戏状态并更新数据库。prior_states.py :确定团队的先验最终比赛状态。features.py :使用先前的最终游戏状态为预测引擎生成功能。predictions.py :使用所选预测引擎为游戏生成预测。游戏API :此组件负责更新正在进行或完成的游戏的预测,并将数据提供给Web应用程序。它从数据库中获取数据,生成预测,并将数据提供给Web应用程序。
games.py :从数据库中获取游戏数据,管理预测更新和数据格式。api.py :定义API端点。games_api.md文档。Web应用程序:此组件是项目的前端,为用户提供了一个简单的接口来查看游戏和预测。它是使用烧瓶建造的。
start_app.py :在根目录中找到的Web应用程序的主要入口点。app.py :定义烧瓶应用程序和路由的主模块。game_data_processor.py应用程序的API格式化游戏数据。templates/ :包含Web应用程序的HTML模板。static/ :包含Web应用程序的CSS和JavaScript文件。
数据采购:关注从根本上描述篮球的数据源数量最少。目前,我们使用NBA API的逐播数据。将来,将视频和跟踪数据合并会很有趣,尽管这些需要更多的资源和访问。
预测引擎:这是该项目的核心,将成为开发重点,直到2024-2025赛季开始。当前的预测引擎选项将被基于DL和基于Genai的引擎取代,从而可以减少数据解析和功能工程,同时还可以扩展以预测更复杂的结果,包括个人播放器性能。
数据存储:未来数据存储将与预测引擎更加无缝集成。该存储要求将将用于API和Web应用程序的当前基于SQL的数据与基于抹布的Genai模型的基于高级向量的存储。
Web应用程序:这是项目的前端,显示了所选日期的游戏以及当前的分数和预测。该界面将保持简单,同时可逐渐提高可用性。将来将添加单独的Genai聊天,以允许用户与预测引擎进行交互,并根据其偏好修改个人预测。



目前,有一些基本的预测引擎用于预测NBA游戏的结果。这些是将来将要实施的更先进的DL和Genai发动机的占位符。当前的发动机使用ML模型对Home and Away分数进行了赛前预测。然后,这些预测用于计算主队的获胜百分比和利润。更新(游戏开始后)预测是基于当前游戏得分,剩余时间和赛前预测的组合。
目前的指标基于对家庭和外客队分数的赛前预测,以及诸如WIN百分比和利润之类的下游指标。这些简单的预测因子当前优于基线预测因子。
将来,当实施DL和Genai模型时,将添加更具挑战性的基线。

使用以下命令将存储库克隆到本地计算机:
git clone https://github.com/NBA-Betting/NBA_AI.git导航到项目目录:
cd NBA_AI创建虚拟环境:
python -m venv venv激活虚拟环境:
source venv/bin/activate安装所需的依赖项:
pip install -r requirements.txt将.env.template文件重命名为.env :
cp .env.template .env在您喜欢的文本编辑器中打开.env文件并设置必要的值:
# .env
# Flask secret key (Optional, Flask will generate one if not set)
# WEB_APP_SECRET_KEY=your_generated_secret_key
# Project root path (Mandatory)
PROJECT_ROOT=/path/to/your/project/root
将/path/to/your/project/root用在本地计算机上的项目根目录的实际路径。您可以将WEB_APP_SECRET_KEY留下评论,如果您要自动生成烧瓶。
默认情况下,配置将指向空数据库( data/NBA_AI_BASE.sqlite )。如果您想使用预先填充的2023-2024季节数据:
从GitHub版本页面下载SQLite数据库ZIP文件:
v0.1 )。NBA_AI_2023_2024.zip文件。提取zip文件:
unzip path/to/NBA_AI_2023_2024.zip -d data更新config.yaml文件以指向提取的数据库:
database :
path : " data/NBA_AI_2023_2024.sqlite " # <<< Set this to point to the database you want to use.使用root目录中的start_app.py文件运行应用程序:
python start_app.py应用程序运行后,您可以通过打开Web浏览器并导航到:
http://127.0.0.1:5000/
每次运行时,数据库更新程序都会为指定季节处理所有游戏。在给定季节的第一次运行中,当数据库为空时,更新者将获取每个游戏的逐场播放数据。此初始更新可能需要几分钟,并且最多需要几个GB的内存,因为它大约对NBA Stats API(每场比赛)进行了大约1,500个API调用。由于数据已经存储在数据库中,因此随后的更新将大大更快。
默认情况下,Web应用程序仅限于2023-2024和2024-2025季节,以防止过度更新过去的季节。这些限制可以在config.yaml文件中调整,并且直接运行代码时不应用。如果需要,更新过程可追溯到2000-2001。
api :
valid_seasons :
- " 2023-2024 "
- " 2024-2025 "这是一项正在进行的工作,并且有很多改进要做。如果您有任何建议或反馈,请随时打开问题或直接与我联系。在2024-2025季节开始之前,我将重点介绍创建DL和Genai预测引擎,但还将在时间允许的情况下努力改进Web应用程序和其他组件。