
이 프로젝트는 광범위한 데이터 수집 및 관리보다는 고급 AI 예측 모델에 중점을 두어 NBA 게임 결과를 예측하는 프로세스를 간소화하는 것을 목표로합니다. 광범위한 데이터 수집을 통해 NBA 게임을 예측하기위한 포괄적 인 기능 세트를 만들기 위해 이전 프로젝트 인 NBA Betting과 달리이 프로젝트는 프로세스를 단순화합니다. 이전 접근법은 다양한 산업 유래 지표의 혜택을 받았지만 데이터 수집 관리의 비용과 복잡성이 너무 높았습니다. 이 프로젝트는 Play-By-Play 데이터와 같은 핵심 데이터 세트에 중점을두고 딥 러닝 및 Genai를 활용하여 게임 결과를 예측합니다.
이 프로젝트는 현재 개발 초기 단계에 있으며 Ridge Regression, XGBoost 및 기본 MLP와 같은 간단한 모델을 사용하는 기본 예측 엔진이 있습니다. 예측 엔진은 기본 게임 점수 예측 및 승리 백분율로 제한됩니다. 웹 앱은 선택한 날짜의 게임을 현재 점수 및 예측과 함께 표시하기위한 간단한 인터페이스를 제공합니다. 다행히도 이것은 프로젝트가 될만큼 복잡합니다. 목표는 대부분의 데이터베이스 업데이트와 게임 API 로직의 일부를 단일 예측 엔진에 점차적으로 통합하는 것입니다. 이를 통해보다 간소화 된 프로세스와보다 유능한 예측 엔진이 가능합니다.

이 프로젝트는 몇 가지 주요 구성 요소를 중심으로 구축되었습니다.
데이터베이스 업데이트 :이 구성 요소는 최신 NBA 게임 데이터로 데이터베이스를 업데이트 할 책임이 있습니다. NBA 통계 API의 데이터를 가져오고, ETL 작업을 수행하고, 기능을 생성하고, 예측을 생성하며, 데이터를 SQLITE 데이터베이스에 저장합니다. 몇 가지 모듈로 구성됩니다.
database_update_manager.py : 전체 프로세스를 오케스트레이션하는 기본 모듈.schedule.py : NBA API에서 일정을 가져와 데이터베이스를 업데이트합니다.pbp.py : 게임에 대한 Play-by-Play 데이터를 가져와 데이터베이스를 업데이트합니다.game_states.py : parses play by-play 데이터를 통해 게임 상태를 생성하고 데이터베이스를 업데이트합니다.prior_states.py : 팀의 최종 최종 게임 상태를 결정합니다.features.py : 이전 최종 게임 상태를 사용하여 예측 엔진의 기능을 생성합니다.predictions.py : 선택한 예측 엔진을 사용하여 게임에 대한 예측을 생성합니다.Games API :이 구성 요소는 진행중인 또는 완료된 게임에 대한 예측을 업데이트하고 웹 앱에 데이터를 제공합니다. 데이터베이스에서 데이터를 가져오고 예측을 생성하며 데이터를 웹 앱에 제공합니다.
games.py : 데이터베이스에서 게임 데이터를 가져오고 예측 업데이트 및 데이터 형식을 관리합니다.api.py : API 엔드 포인트를 정의합니다.games_api.md : API 문서.웹 앱 :이 구성 요소는 프로젝트의 프론트 엔드이며 사용자가 게임 및 예측을 볼 수있는 간단한 인터페이스를 제공합니다. 플라스크를 사용하여 제작되었습니다.
start_app.py : 루트 디렉토리에있는 웹 앱의 메인 엔트리 포인트.app.py : 플라스크 앱과 경로를 정의하는 기본 모듈.game_data_processor.py : 웹 앱의 API의 게임 데이터 형식.templates/ : 웹 앱 용 HTML 템플릿이 포함되어 있습니다.static/ : 웹 앱의 CSS 및 JavaScript 파일이 포함되어 있습니다.
데이터 소싱 : 농구를 근본적으로 설명하는 최소한의 데이터 소스에 중점을 둡니다. 현재 NBA API의 Play-By-Play 데이터를 사용합니다. 앞으로 비디오를 통합하고 데이터를 추적하는 것은 흥미로울 것이지만, 이들은 훨씬 더 많은 리소스와 액세스가 필요합니다.
예측 엔진 : 이것은 프로젝트의 핵심이며 2024-2025 시즌이 시작될 때까지 개발 초점이 될 것입니다. 현재 예측 엔진 옵션은 DL 및 Genai 기반 엔진으로 대체되어 데이터 구문 분석 및 기능 엔지니어링이 줄어들면서 개별 플레이어 성능을 포함한보다 복잡한 결과를 예측할 수 있습니다.
데이터 저장소 : 향후 데이터 저장소는 예측 엔진과 더 완벽하게 통합됩니다. 스토리지 요구 사항은 API 및 웹 앱에 사용되는 현재 SQL 기반 데이터와 RAG 기반 Genai 모델을위한 고급 벡터 기반 스토리지와 결합합니다.
웹 앱 : 이것은 프로젝트의 프론트 엔드이며, 선택한 날짜의 게임을 현재 점수 및 예측과 함께 표시합니다. 인터페이스는 단순하게 유지되는 반면 유용성은 점차 향상됩니다. 향후 별도의 Genai 채팅이 추가되어 사용자가 예측 엔진과 상호 작용하고 선호도에 따라 개별 예측을 수정할 수 있습니다.



현재 NBA 게임의 결과를 예측하는 데 사용되는 몇 가지 기본 예측 엔진이 있습니다. 이들은 향후 구현 될 고급 DL 및 Genai 엔진의 자리 표시 자 역할을합니다. 현재 엔진은 ML 모델을 사용하여 가정 및 원정 점수에 대한 게임 전 예측을 만듭니다. 그런 다음 이러한 예측은 홈 팀의 승리 백분율과 마진을 계산하는 데 사용됩니다. 업데이트 된 (게임 시작 후) 예측은 현재 게임 점수, 나머지 시간 및 게임 전 예측의 조합을 기반으로합니다.
현재 지표는 홈 및 원정 팀 점수에 대한 게임 전 예측과 승리 백분율 및 마진과 같은 다운 스트림 메트릭을 기반으로합니다. 이 간단한 예측 변수는 현재 기준 예측 변수보다 성능이 우수합니다.
앞으로 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. 루트 디렉토리에서 start_app.py 파일을 사용하여 응용 프로그램을 실행하십시오.
python start_app.py응용 프로그램이 실행되면 웹 브라우저를 열고 다음으로 탐색하여 액세스 할 수 있습니다.
http://127.0.0.1:5000/
데이터베이스 업데이트는 실행할 때마다 지정된 계절의 모든 게임을 처리합니다. 주어진 시즌의 첫 번째 달리기에서 데이터베이스가 비어있을 때 업데이트는 각 게임에 대한 플레이 별 데이터를 가져오고 파싱합니다. 이 초기 업데이트는 몇 분이 소요될 수 있으며 NBA 통계 API (게임당 1 개)에 약 1,500 개의 API 호출을 할 수 있으므로 최대 2 개의 GB 메모리가 필요합니다. 데이터가 이미 데이터베이스에 저장되어 있으므로 후속 업데이트가 훨씬 빠릅니다.
기본적으로 웹 앱은 지난 시즌의 과도한 업데이트를 방지하기 위해 2023-2024 및 2024-2025 시즌으로 제한됩니다. 이러한 제한 사항은 config.yaml 파일에서 조정할 수 있으며 코드를 직접 실행할 때는 적용되지 않습니다. 업데이트 프로세스는 원하는 경우 2000-2001 년까지 계절을 지원합니다.
api :
valid_seasons :
- " 2023-2024 "
- " 2024-2025 "이것은 진행중인 작업이며 많은 개선 사항이 있습니다. 제안이나 피드백이 있으면 문제를 열거나 직접 연락하십시오. 2024-2025 시즌이 시작될 때까지 DL 및 Genai Prediction 엔진을 만드는 데 중점을 둘 것이지만 시간이 허용하는 것처럼 웹 앱 및 기타 구성 요소를 개선하기 위해 노력할 것입니다.