
Ce projet vise à rationaliser le processus de prédiction des résultats du jeu NBA en se concentrant sur des modèles de prédiction AI avancés plutôt que sur la collecte et la gestion des données approfondies. Contrairement à mon projet précédent, NBA Betting, qui visait à créer un ensemble de fonctionnalités complet pour prédire les jeux NBA grâce à une vaste collection de données, ce projet simplifie le processus. Bien que l'approche précédente bénéficie de diverses mesures dérivées de l'industrie, le coût et la complexité de la gestion de la collecte de données étaient trop élevés. Ce projet se concentre sur un ensemble de données de base, tels que les données play-by-play, et exploite l'apprentissage en profondeur et Genai pour prédire les résultats du jeu.
Le projet en est actuellement aux premiers stades du développement, avec un moteur de prédiction de base qui utilise des modèles simples comme la régression de Ridge, XGBoost et un MLP de base. Le moteur de prédiction est limité aux prévisions de score de jeu de base et aux pourcentages de victoires. L'application Web fournit une interface simple pour afficher des jeux pour la date sélectionnée ainsi que les scores et prédictions actuels. Heureusement, cela est aussi compliqué que le projet devrait devenir. L'objectif est d'intégrer progressivement la plupart des pièces de la base de données Updater et une partie de la logique de l'API des jeux dans un seul moteur de prédiction. Cela permettra un processus plus rationalisé et un moteur de prédiction plus capable.

Le projet est construit autour de quelques composants clés:
Base de données Mise à jour : ce composant est responsable de la mise à jour de la base de données avec les dernières données de jeu NBA. Il récupère les données de l'API NBA Stats, effectue des opérations ETL, génère des fonctionnalités, crée des prédictions et stocke les données dans une base de données SQLite. Il se compose de quelques modules:
database_update_manager.py : le module principal qui orchestre l'ensemble du processus.schedule.py : récupère le calendrier de l'API NBA et met à jour la base de données.pbp.py : récupére les données play-by-play pour les jeux et met à jour la base de données.game_states.py : parses play-by-play les données pour générer des états de jeu et met à jour la base de données.prior_states.py : détermine les états finaux précédents pour les équipes.features.py : utilise des états finaux précédents pour générer des fonctionnalités pour le moteur de prédiction.predictions.py : génère des prédictions pour les jeux en utilisant le moteur de prédiction choisi.API Games : Ce composant est responsable de la mise à jour des prédictions pour les jeux en cours ou terminés et de fournir les données à l'application Web. Il récupère les données de la base de données, génère des prédictions et sert les données à l'application Web.
games.py : récupère les données du jeu de la base de données, gère la mise à jour de la prédiction et le formatage des données.api.py : définit les points de terminaison de l'API.games_api.md : documentation de l'API.Application Web : Ce composant est l'avant du projet, offrant une interface simple aux utilisateurs pour afficher les jeux et les prédictions. Il est construit à l'aide de flacon.
start_app.py : le point d'entrée principal de l'application Web trouvée dans le répertoire racine.app.py : le module principal qui définit l'application et les itinéraires du ballon.game_data_processor.py : formats les données de jeu de l'API pour l'application Web.templates/ : contient les modèles HTML pour l'application Web.static/ : contient les fichiers CSS et JavaScript pour l'application Web.
Approvisionnement de données : concentrez-vous sur un nombre minimal de sources de données qui décrivent fondamentalement le basket-ball. Actuellement, nous utilisons des données play-by-play de l'API NBA. À l'avenir, l'intégration des données vidéo et de suivi serait intéressante, bien que celles-ci nécessitent beaucoup plus de ressources et d'accès.
Moteur de prédiction : Ceci est le cœur du projet et sera l'objectif du développement jusqu'au début de la saison 2024-2025. Les options de moteur de prédiction actuelles seront remplacées par un moteur DL et Genai, permettant une diminution de l'analyse de données et de l'ingénierie des fonctionnalités tout en étendant pour prédire les résultats plus complexes, y compris les performances individuelles des joueurs.
Stockage de données : le stockage futur de données s'intègre de manière plus transparente au moteur de prédiction. Les exigences de stockage combineront les données actuelles basées sur SQL utilisées pour l'API et l'application Web avec un stockage plus avancé basé sur des vecteurs pour les modèles Genai basés sur RAG.
Application Web : Il s'agit du frontal du projet, affichant les jeux pour la date sélectionnée avec les scores et les prédictions actuels. L'interface restera simple tandis que la convivialité est progressivement améliorée. Un chat Genai séparé sera ajouté à l'avenir pour permettre aux utilisateurs d'interagir avec le moteur de prédiction et de modifier les prédictions individuelles en fonction de leurs préférences.



Actuellement, quelques moteurs de prédiction de base sont utilisés pour prédire les résultats des jeux NBA. Ceux-ci servent d'espaces réservés aux moteurs DL et Genai les plus avancés qui seront mis en œuvre à l'avenir. Les moteurs actuels font des prévisions d'avant-match pour les scores à domicile et à l'extérieur à l'aide de modèles ML. Ces prédictions sont ensuite utilisées pour calculer le pourcentage de victoires et la marge de l'équipe à domicile. Les prédictions mises à jour (après le début du jeu) sont basées sur une combinaison du score de jeu actuel, du temps restant et des prédictions d'avant-match.
Les mesures actuelles sont basées sur les prévisions d'avant-match pour les scores d'équipe à domicile et à l'extérieur, ainsi que des mesures en aval telles que le pourcentage de victoires et la marge. Ces prédicteurs simples surpassent actuellement le prédicteur de base.
À l'avenir, une base de référence plus difficile basée sur la propagation de Vegas sera ajoutée lorsque les modèles DL et Genai seront mis en œuvre.

Clone le référentiel de votre machine locale à l'aide de la commande suivante:
git clone https://github.com/NBA-Betting/NBA_AI.gitAccédez au répertoire du projet:
cd NBA_AICréer un environnement virtuel:
python -m venv venvActivez l'environnement virtuel:
source venv/bin/activateInstallez les dépendances requises:
pip install -r requirements.txt Renommez le fichier .env.template à .env :
cp .env.template .env Ouvrez le fichier .env dans votre éditeur de texte préféré et définissez les valeurs nécessaires:
# .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
Remplacez /path/to/your/project/root par le chemin réel vers le répertoire racine de votre projet sur votre machine locale. Vous pouvez laisser WEB_APP_SECRET_KEY a commenté si vous voulez que Flask le génére automatiquement.
Par défaut, la configuration pointera vers la base de données vide ( data/NBA_AI_BASE.sqlite ). Si vous souhaitez utiliser les données de saison pré-peuplées 2023-2024:
Téléchargez le fichier zip de base de données SQLite à partir de la page de version GitHub:
v0.1 ).NBA_AI_2023_2024.zip joint à la version.Extraire le fichier zip:
unzip path/to/NBA_AI_2023_2024.zip -d data Mettez à jour le fichier config.yaml pour pointer vers la base de données extraite:
database :
path : " data/NBA_AI_2023_2024.sqlite " # <<< Set this to point to the database you want to use. Exécutez l'application à l'aide du fichier start_app.py dans le répertoire racine:
python start_app.pyUne fois l'application en cours d'exécution, vous pouvez y accéder en ouvrant votre navigateur Web et en naviguant vers:
http://127.0.0.1:5000/
La base de données Updater traite tous les jeux pour la saison spécifiée à chaque fois qu'il est exécuté. Lors de la première manche pour une saison donnée, lorsque la base de données est vide, la mise à jour récupère les données play-by-play pour chaque jeu. Cette mise à jour initiale peut prendre plusieurs minutes et nécessiter jusqu'à quelques Go de mémoire, car elle passe environ 1 500 appels API à l'API NBA Stats (un par jeu). Les mises à jour ultérieures seront considérablement plus rapides car les données sont déjà stockées dans la base de données.
Par défaut, l'application Web est limitée aux saisons 2023-2024 et 2024-2025 pour éviter une mise à jour excessive des saisons passées. Ces restrictions peuvent être ajustées dans le fichier config.yaml et ne s'appliquent pas lors de l'exécution directement du code. Le processus de mise à jour prend en charge les saisons jusqu'à 2000-2001, si vous le souhaitez.
api :
valid_seasons :
- " 2023-2024 "
- " 2024-2025 "C'est vraiment un travail en cours, et il y a de nombreuses améliorations à apporter. Si vous avez des suggestions ou des commentaires, n'hésitez pas à ouvrir un problème ou à me contacter directement. Je me concentrerai sur la création des moteurs de prédiction DL et Genai jusqu'au début de la saison 2024-2025, mais je travaillerai également sur l'amélioration de l'application Web et d'autres composants au fil du temps.