
Этот проект направлен на то, чтобы упростить процесс прогнозирования результатов игр НБА путем сосредоточения внимания на передовых моделях прогнозирования ИИ, а не на обширном сборе и управлении данных. В отличие от моего предыдущего проекта, NBA Betting, который был направлен на создание комплексного набора функций для прогнозирования игр NBA с помощью обширного сбора данных, этот проект упрощает процесс. В то время как предыдущий подход выиграл от различных отраслевых показателей, стоимость и сложность управления сбором данных были слишком высокими. Этот проект фокусируется на основном наборе данных, таком как данные об игре, и использует глубокое обучение и Genai для прогнозирования результатов игры.
В настоящее время проект находится на ранних стадиях разработки, с базовым двигателем прогнозирования, который использует простые модели, такие как регрессия хребта, XGBOOST и основной MLP. Двигатель прогнозирования ограничен базовыми прогнозами оценки игры и процентом побед. Веб -приложение предоставляет простой интерфейс для отображения игр для выбранной даты, а также текущие оценки и прогнозы. К счастью, это так сложно, как и проект. Цель состоит в том, чтобы постепенно интегрировать большинство произведений обновления базы данных и часть логики Games API в один механизм прогнозирования. Это позволит получить более оптимизированный процесс и более способный двигатель прогнозирования.

Проект построен вокруг нескольких ключевых компонентов:
Обновление базы данных : этот компонент отвечает за обновление базы данных с последними данными Game Game. Он получает данные из API NBA Stats, выполняет операции ETL, генерирует функции, создает прогнозы и сохраняет данные в базе данных SQLite. Он состоит из нескольких модулей:
database_update_manager.py : основной модуль, который организует весь процесс.schedule.py : получает расписание из API NBA и обновляет базу данных.pbp.py : получает воспроизведение данных для игр и обновляет базу данных.game_states.py : анализы игровых данных для генерации состояний игры и обновления базы данных.prior_states.py : определяет предыдущие финальные состояния игры для команд.features.py : использует предыдущие финальные состояния игры для создания функций для движения прогнозирования.predictions.py .Games API : Этот компонент отвечает за обновление прогнозов для текущих или завершенных игр и предоставления данных в веб -приложении. Он получает данные из базы данных, генерирует прогнозы и обслуживает данные в веб -приложении.
games.py : получает данные об игре из базы данных, управляет обновлением прогноза и форматированием данных.api.py : определяет конечные точки API.games_api.md : документация API.Веб -приложение : Этот компонент является передней частью проекта, предоставляя простой интерфейс для пользователей для просмотра игр и прогнозов. Он построен с использованием колбы.
start_app.py : основная точка входа для веб -приложения, найденного в корневом каталоге.app.py : основной модуль, который определяет приложение и маршруты Flask.game_data_processor.py : FORMATS GAME DATA из API для веб -приложения.templates/ : содержит шаблоны HTML для веб -приложения.static/ : содержит файлы CSS и JavaScript для веб -приложения.
Поиск данных : сосредоточиться на минимальном количестве источников данных, которые в корне описывают баскетбол. В настоящее время мы используем игровые данные из API NBA. В будущем будет интересно включение видео и отслеживания данных, хотя они требуют значительно большего количества ресурсов и доступа.
Двигатель прогнозирования : это ядро проекта и будет направлено на разработку до тех пор, пока не начнется сезон 2024-2025 годов. Текущие варианты двигателя прогнозирования будут заменены на DL и двигатель на основе Genai, что позволяет снизить анализ данных и разработка функций, а также масштабировать для прогнозирования более сложных результатов, включая производительность индивидуальных игроков.
Хранение данных : будущее хранилище данных будет более плавной интеграцией с механизмом прогнозирования. Требования к хранению будут объединять текущие данные на основе SQL, используемые для API и веб-приложения с более продвинутым векторным хранилищем для моделей Genai на основе RAG.
Веб -приложение : Это передняя часть проекта, отображающая игры для выбранной даты, а также текущие результаты и прогнозы. Интерфейс останется простым, в то время как удобство использования постепенно улучшается. В будущем будет добавлен отдельный чат Genai, чтобы позволить пользователям взаимодействовать с двигателем прогнозирования и изменять отдельные прогнозы на основе их предпочтений.



В настоящее время существует несколько основных двигателей прогнозирования, используемых для прогнозирования результатов игр NBA. Они служат заполнителями для более продвинутых двигателей DL и Genai, которые будут реализованы в будущем. Текущие двигатели делают предварительные прогнозы для домашних и выездных результатов с использованием моделей ML. Эти прогнозы затем используются для расчета процента побед и маржи для домашней команды. Обновленные (после начала игры) прогнозы основаны на комбинации текущей игры, оставшегося времени и предварительных прогнозах.
Текущие метрики основаны на предварительных прогнозах для баллов команды Home и Away, наряду с нисходящими показателями, такими как процент побед и маржа. Эти простые предикторы в настоящее время превосходят базовый предиктор.
В будущем будет добавлена более сложная базовая линия, основанная на распространении Вегаса, когда будут реализованы модели 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 гг.
Загрузите zip -файл базы данных SQLite на странице выпуска GitHub:
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. Запустите приложение, используя файл start_app.py в корневом каталоге:
python start_app.pyПосле того, как приложение будет запущено, вы можете получить к нему доступ, открыв свой веб -браузер и перейдя к:
http://127.0.0.1:5000/
Обновление базы данных обрабатывает все игры для указанного сезона каждый раз, когда он работает. В первом забеге для данного сезона, когда база данных пуста, обновляющий получает данные и использует данные за каждую игру для каждой игры. Это первоначальное обновление может занять несколько минут и потребовать до пары ГБ памяти, так как оно делает приблизительно 1500 вызовов API в API NBA Stats API (по одному на игру). Последующие обновления будут значительно быстрее, поскольку данные уже хранятся в базе данных.
По умолчанию веб-приложение ограничено сезонами 2023-2024 и 2024-2025 годов, чтобы предотвратить чрезмерное обновление прошлых сезонов. Эти ограничения могут быть скорректированы в файле config.yaml и не применяются при непосредственном запуске кода. Процесс обновления поддерживает сезоны еще в 2000-2001 годах, при желании.
api :
valid_seasons :
- " 2023-2024 "
- " 2024-2025 "Это очень в процессе работы, и есть много улучшений. Если у вас есть какие -либо предложения или отзывы, пожалуйста, не стесняйтесь открывать проблему или обратиться ко мне напрямую. Я сосредоточусь на создании двигателей прогнозирования DL и Genai до тех пор, пока не начнется сезон 2024-2025 гг.