
Dieses Projekt zielt darauf ab, den Prozess der Vorhersage von NBA -Spielergebnissen zu optimieren, indem sie sich eher auf fortschrittliche KI -Vorhersagemodelle als auf umfangreiche Datenerfassung und -verwaltung konzentrieren. Im Gegensatz zu meinem vorherigen Projekt, NBA -Wetten, das ein umfassendes Funktion für die Vorhersage von NBA -Spielen durch umfangreiche Datenerfassung erstellen sollte, vereinfacht dieses Projekt den Prozess. Während der vorherige Ansatz von verschiedenen von Branchen abgeleiteten Metriken profitierte, waren die Kosten und Komplexität der Datenerfassung zu hoch. Dieses Projekt konzentriert sich auf einen Kerndatensatz wie Play-by-Play-Daten und nutzt Deep Learning und Genai, um die Spielergebnisse vorherzusagen.
Das Projekt befindet sich derzeit in den frühen Entwicklungsstadien mit einer grundlegenden Vorhersage -Engine, die einfache Modelle wie Ridge Regression, Xgboost und ein grundlegendes MLP verwendet. Die Vorhersage -Engine beschränkt sich auf grundlegende Vorhersagen von Spielpunkten und den Gewinnanteil. Die Web -App bietet eine einfache Schnittstelle zum Anzeigen von Spielen für das ausgewählte Datum sowie aktuelle Punkte und Vorhersagen. Glücklicherweise ist dies so kompliziert, wie das Projekt werden sollte. Ziel ist es, die meisten Teile des Datenbank -Updaters und Teil der Games -API -Logik nach und nach in eine einzige Vorhersage -Engine zu integrieren. Dies ermöglicht einen optimierteren Prozess und eine fähigere Vorhersage -Engine.

Das Projekt basiert auf einigen Schlüsselkomponenten:
Datenbank -Updater : Diese Komponente ist für die Aktualisierung der Datenbank mit den neuesten NBA -Spieldaten verantwortlich. Es holt Daten aus der NBA -Statistik -API, führt ETL -Operationen aus, generiert Features, erstellt Vorhersagen und speichert die Daten in einer SQLite -Datenbank. Es besteht aus ein paar Modulen:
database_update_manager.py : Das Hauptmodul, das den gesamten Prozess organisiert.schedule.py : Abrufen Sie den Zeitplan von der NBA -API und aktualisieren Sie die Datenbank.pbp.py : Fetches Play-by-Play-Daten für Spiele und aktualisiert die Datenbank.game_states.py : Parses Play-by-Play-Daten zum Generieren von Spielstaaten und aktualisiert die Datenbank.prior_states.py : Bestimmt frühere endgültige Spielstaaten für Teams.features.py : Verwendet frühere endgültige Spielstaaten, um Funktionen für die Prediction Engine zu generieren.predictions.py : Erzeugt Vorhersagen für Spiele mit der gewählten Vorhersage -Engine.Games API : Diese Komponente ist für die Aktualisierung der Vorhersagen für laufende oder abgeschlossene Spiele und zur Bereitstellung der Daten für die Web -App verantwortlich. Es holt Daten aus der Datenbank ab, generiert Vorhersagen und dient die Daten für die Web -App.
games.py : Spiele Spieldaten aus der Datenbank, verwaltet die Aktualisierung und die Datenformatierung von Vorhersagen.api.py : Definiert die API -Endpunkte.games_api.md : API -Dokumentation.Web -App : Diese Komponente ist das Frontend des Projekts und bietet eine einfache Schnittstelle für Benutzer, um Spiele und Vorhersagen anzusehen. Es wird mit einem Kolben gebaut.
start_app.py : Der Haupteinstiegspunkt für die im Stammverzeichnis gefundene Web -App.app.py : Das Hauptmodul, das die Flask -App und die Routen definiert.game_data_processor.py : Formatdaten aus der API für die Web -App.templates/ : Enthält die HTML -Vorlagen für die Web -App.static/ : Enthält die CSS- und JavaScript -Dateien für die Web -App.
Datenbeschaffung : Konzentrieren Sie sich auf eine minimale Anzahl von Datenquellen, die den Basketball grundlegend beschreiben. Derzeit verwenden wir Play-by-Play-Daten aus der NBA-API. In Zukunft wäre das Einbeziehen von Video- und Verfolgung von Daten interessant, obwohl diese erheblich mehr Ressourcen und Zugriff erfordern.
Prediction Engine : Dies ist der Kern des Projekts und wird bis zur Beginn der Saison 2024-2025 der Entwicklungsfokus sein. Die aktuellen Vorhersage-Engine-Optionen werden durch einen DL- und Genai-basierten Motor ersetzt, der eine verringerte Datenanalyse und Feature-Engineering ermöglicht und gleichzeitig gleichzeitig komplexere Ergebnisse vorhersagt, einschließlich der individuellen Spielerleistung.
Datenspeicherung : Zukünftige Datenspeicher wird sich nahtlos in die Prediction Engine integrieren. Die Speicheranforderungen kombinieren die aktuellen SQL-basierten Daten, die für die API und die Web-App verwendet werden, mit einem fortschrittlicheren vektorbasierten Speicher für RAG-basierte Genai-Modelle.
Web -App : Dies ist das Frontend des Projekts, das die Spiele für das ausgewählte Datum zusammen mit den aktuellen Punkten und Vorhersagen anzeigt. Die Schnittstelle bleibt einfach, während die Benutzerfreundlichkeit allmählich verbessert wird. In Zukunft wird ein separater Genai -Chat hinzugefügt, damit Benutzer mit der Vorhersage -Engine interagieren und individuelle Vorhersagen anhand ihrer Präferenzen ändern können.



Derzeit gibt es einige grundlegende Vorhersage -Engines, die die Ergebnisse von NBA -Spielen vorhergesagt haben. Diese dienen als Platzhalter für die fortschrittlicheren DL- und Genai -Motoren, die in Zukunft umgesetzt werden. Die aktuellen Motoren machen mithilfe von ML-Modellen Vorhersagen vor dem Spiel für Heim- und Auswärtsbewertungen. Diese Vorhersagen werden dann verwendet, um den Gewinnprozentsatz und die Marge für das Heimteam zu berechnen. Aktualisierte Vorhersagen (nach Spielstart) basieren auf einer Kombination aus der aktuellen Spielzeit, der verbleibenden Zeit und den Vorhersagen vor dem Spiel.
Die aktuellen Metriken basieren auf Vorhersagen vor dem Spiel für die Bewertungen des Heim- und Auswärts-Teams sowie auf nachgelagerten Metriken wie Gewinnprozentsatz und Marge. Diese einfachen Prädiktoren übertreffen derzeit den Basis -Prädiktor.
In Zukunft wird eine anspruchsvollere Grundlinie auf der Grundlage der Vegas -Spread hinzugefügt, wenn die DL- und Genai -Modelle implementiert werden.

Klonen Sie das Repository mit dem folgenden Befehl in Ihren lokalen Computer:
git clone https://github.com/NBA-Betting/NBA_AI.gitNavigieren Sie zum Projektverzeichnis:
cd NBA_AIErstellen Sie eine virtuelle Umgebung:
python -m venv venvAktivieren Sie die virtuelle Umgebung:
source venv/bin/activateInstallieren Sie die erforderlichen Abhängigkeiten:
pip install -r requirements.txt Benennen Sie die Datei .env.template in .env um:
cp .env.template .env Öffnen Sie die .env -Datei in Ihrem bevorzugten Texteditor und legen Sie die erforderlichen Werte fest:
# .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
Ersetzen Sie /path/to/your/project/root durch den tatsächlichen Pfad zum Stammverzeichnis Ihres Projekts auf Ihrem lokalen Computer. Sie können WEB_APP_SECRET_KEY kommentiert lassen, ob Flask es automatisch generieren soll.
Standardmäßig verweist die Konfiguration auf die leere Datenbank ( data/NBA_AI_BASE.sqlite ). Wenn Sie die vorgepopulierten Saisondaten 2023-2024 verwenden möchten:
Laden Sie die SQLite -Datenbank -ZIP -Datei von der GitHub Release -Seite herunter:
v0.1 ).NBA_AI_2023_2024.zip -Datei herunter.Extrahieren Sie die ZIP -Datei:
unzip path/to/NBA_AI_2023_2024.zip -d data Aktualisieren Sie die Datei config.yaml , um auf die extrahierte Datenbank zu verweisen:
database :
path : " data/NBA_AI_2023_2024.sqlite " # <<< Set this to point to the database you want to use. Führen Sie die Anwendung mit der Datei start_app.py im Stammverzeichnis aus:
python start_app.pySobald die Anwendung ausgeführt wird, können Sie darauf zugreifen, indem Sie Ihren Webbrowser öffnen und navigieren zu:
http://127.0.0.1:5000/
Die Datenbank -Updater verarbeitet alle Spiele für die angegebene Saison jedes Mal, wenn sie ausgeführt wird. Auf dem ersten Lauf für eine bestimmte Saison, wenn die Datenbank leer ist, holt sich die Updater-Daten für jedes Spiel ab. Dieses erste Update kann einige Minuten dauern und bis zu ein paar GB Speicher erfordern, da es ungefähr 1.500 API -Anrufe bei der NBA -Statistik -API (eines pro Spiel) erzeugt. Nachfolgende Aktualisierungen werden erheblich schneller sein, da die Daten bereits in der Datenbank gespeichert sind.
Standardmäßig ist die Web-App auf die Spielzeiten 2023-2024 und 2024-2025 beschränkt, um eine übermäßige Aktualisierung der vergangenen Saisons zu verhindern. Diese Einschränkungen können in der Datei config.yaml angepasst werden und werden beim direkten Ausführen des Code nicht angewendet. Der Update-Prozess unterstützt die Jahreszeiten bis 2000-2001, falls gewünscht.
api :
valid_seasons :
- " 2023-2024 "
- " 2024-2025 "Dies ist sehr viel in Arbeit, und es gibt viele Verbesserungen, die vorgenommen werden müssen. Wenn Sie Vorschläge oder Feedback haben, können Sie sich gerne ein Problem eröffnen oder direkt an mich wenden. Ich werde mich darauf konzentrieren, die DL- und Genai Prediction-Engines zu erstellen, bis die Saison 2024-2025 beginnt, wird aber auch an der Verbesserung der Web-App und anderer Komponenten arbeiten.