kyleskom/NBA-Machine-Learning-Sports-Betting

NBA sports betting using machine learning

NBA スポーツベッティングにおける機械学習の活用

何であるか – 歴史的なチーム統計とスポーツベッティングブックのオッズを用いて、機械学習モデルを訓練し、NBAの試合の勝者(マネーライン)と合計得点(オーバー/アンダー)を予測するPythonプロジェクトです。また、各ベットの期待値を計算し、ケリー基準に基づいてベット額の提案も行います。

主な構成要素

  • データ収集Get_Data はNBA APIから日々のチーム統計をスクレイピングし、Get_Odds_Data はSportsbook Review (SBR) から対応するブック(FanDuel、DraftKingsなど)のオッズとスコアを取得します。両方とも原始データをSQLiteデータベースに保存します。
  • 特徴量エンジニアリングCreate_Games は2つのデータベースをマージし、休養日数などの派生フィールドを追加して、トレーニング用のマッチアップテーブルを生成します。
  • モデル – 事前に構築されたスクリプトで以下の2種類のモデルをトレーニングします:
    • XGBoost(勾配ブースティング木):マネーラインと合計得点の予測に使用。
    • 簡単な順伝播ニューラルネットワーク(TensorFlow):同じタスクに使用。
    • ロジスティック回帰のスクリプトも提供されています。
  • 予測スクリプトmain.py は今日のスケジュールを取得し、同じ特徴量セットを構築、保存されたモデルを読み込み、以下を出力します:
    • 各チームの勝利確率。
    • 提示されたオッズでのベットの期待値。
    • ケリー基準に基づくベット額の割合(オプション)。
  • Web UI – 最小限のFlaskアプリ(Flask/)により、ブラウザで最新の予測を閲覧できます。

実行方法

# 依存関係のインストール
pip install -r requirements.txt

# データの更新(初回のみ)
cd src/Process-Data
python -m Get_Data
python -m Get_Odds_Data
python -m Create_Games

# モデルのトレーニング(オプション – 事前トレーニング済みモデルが同梱)
cd ../Train-Models
python -m XGBoost_Model_ML --dataset dataset_2012-26 --trials 100 --splits 5 --calibration sigmoid
# …他のスクリプトも同様に実行

# 今日の試合の予測
cd ../../
python3 main.py -xgb -odds=fanduel   # XGBoostを使用し、FanDuelのオッズを自動取得

-nn を追加するとニューラルネットモデルを使用可能、-A ですべてのモデルを実行、-kc でケリー基準のベット額を表示できます。

一般的な利用例 – スポーツベッティング愛好家が毎日スクリプトを実行し、スポーツブックが過小評価しているNBAチームをデータ駆動で特定し、ケリー基準に基づく資金管理戦略で最適なベット額を決定します。

制限事項

  • モデルは現在のシーズンまでのデータでトレーニングされています。試合中の情報(例:出場ラインアップ発表後の怪我)は反映されません。
  • ニューラルネットワークスクリプトは特定のデータセットパスにハードコードされており、カスタムデータ用には手動で編集が必要です。
  • 正確さはスクレイピングされた統計とオッズの品質に依存します。ソースAPIの変更によりパイプラインが破損する可能性があります。

貢献について – READMEは、モデルの挙動やデータパイプラインを変更する貢献を歓迎しています。貢献者はドキュメントも更新する必要があります。


上記のすべての情報はリポジトリのREADMEから直接取得したものであり、追加機能は推測されていません。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト