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から直接取得したものであり、追加機能は推測されていません。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト