
該項目旨在通過關注高級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應用程序和其他組件。