kyleskom/NBA-Machine-Learning-Sports-Betting

NBA sports betting using machine learning

使用机器学习进行NBA体育博彩

是什么 – 一个Python项目,通过在历史球队统计数据和体育博彩赔率上训练机器学习模型,预测NBA比赛胜者(胜负盘)和总分(大/小分)。它还计算每笔投注的期望值,并可使用凯利准则建议投注金额。

主要组件

  • 数据收集Get_Data 从NBA API抓取每日球队统计数据;Get_Odds_Data 从Sportsbook Review (SBR) 获取支持的博彩公司(如FanDuel、DraftKings等)的赔率和比分。两者均将原始数据存储在SQLite数据库中。
  • 特征工程Create_Games 合并两个数据库,添加如休息天数等衍生字段,生成可用于训练的对位表。
  • 模型 – 提供预构建脚本训练两类模型:
    • 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;未推断任何额外功能。

相关

  • 项目
  • 项目
  • 项目
  • 项目