
このプロジェクトは、広範なデータ収集と管理ではなく、高度なAI予測モデルに焦点を当てることにより、NBAゲームの結果を予測するプロセスを合理化することを目的としています。私の以前のプロジェクトとは異なり、NBA Bettingは、広範なデータ収集を通じてNBAゲームを予測するための包括的な機能セットを作成することを目的としていますが、このプロジェクトはプロセスを簡素化します。以前のアプローチはさまざまな業界派生のメトリックの恩恵を受けましたが、データ収集の管理のコストと複雑さは高すぎました。このプロジェクトは、プレイごとのデータなどのコアデータセットに焦点を当て、ゲームの成果を予測するために深い学習とGenaiを活用します。
このプロジェクトは現在、開発の初期段階にあり、Ridge Regression、XGBoost、Basic MLPなどの単純なモデルを使用する基本的な予測エンジンを備えています。予測エンジンは、基本的なゲームスコアの予測とWINパーセンテージに限定されています。 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 :選択した予測エンジンを使用して、ゲームの予測を生成します。Games API :このコンポーネントは、継続的または完了したゲームの予測を更新し、Webアプリにデータを提供する責任があります。データベースからデータを取得し、予測を生成し、データをWebアプリに提供します。
games.py :データベースからゲームデータを取得し、予測の更新とデータのフォーマットを管理します。api.pyエンドポイントを定義します。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ベースのデータを、RAGベースのGenaiモデルのより高度なベクターベースのストレージと組み合わせます。
Webアプリ:これはプロジェクトのフロントエンドであり、選択した日付のゲームを現在のスコアと予測とともに表示します。インターフェイスはシンプルであり、使いやすさは徐々に改善されます。ユーザーが予測エンジンと対話し、好みに基づいて個々の予測を変更できるように、将来的には別のGenaiチャットが追加されます。



現在、NBAゲームの結果を予測するために使用されるいくつかの基本的な予測エンジンがあります。これらは、将来実装される、より高度なDLおよびGenaiエンジンのプレースホルダーとして機能します。現在のエンジンは、MLモデルを使用して、ホームおよびアウェイスコアの試合前の予測を行います。これらの予測は、ホームチームの勝率とマージンを計算するために使用されます。更新された(ゲーム開始後)予測は、現在のゲームスコア、残りの時間、および試合前の予測の組み合わせに基づいています。
現在のメトリックは、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ローカルマシン上のプロジェクトのルートディレクトリへの実際のパスに置き換えます。 Flaskを自動的に生成したい場合は、 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アプリケーションが実行されたら、Webブラウザを開き、次のように移動することでアクセスできます。
http://127.0.0.1:5000/
データベースアップターは、実行されるたびに指定されたシーズンのすべてのゲームを処理します。特定のシーズンの最初の実行では、データベースが空になると、各ゲームのプレイごとのデータを取得し、解析します。この最初の更新には数分かかる場合があり、NBA Stats API(ゲームごとに1つ)に約1,500のAPI呼び出しを行うため、最大数GBのメモリが必要になる場合があります。データはデータベースに既に保存されているため、後続の更新は大幅に高速になります。
デフォルトでは、Webアプリは2023-2024および2024-2025シーズンに限定されており、過去のシーズンの過度の更新を防ぎます。これらの制限はconfig.yamlファイルで調整でき、コードを直接実行するときは適用されません。更新プロセスは、必要に応じて、2000年から2001年までのシーズンをサポートします。
api :
valid_seasons :
- " 2023-2024 "
- " 2024-2025 "これは非常に進行中の作業であり、多くの改善が行われることがあります。提案やフィードバックがある場合は、お気軽に問題を開いたり、直接ご連絡ください。 2024-2025シーズンが始まるまで、DLおよびGenai予測エンジンの作成に焦点を当てますが、時間が許す限りWebアプリやその他のコンポーネントの改善にも取り組みます。