AI预测世界杯比赛结果,惊掉下巴!

Python绿色通道

共 1320字,需浏览 3分钟

 ·

2022-11-29 08:15

↑ 关注 + 星标 ,每天学Python新技能

后台回复【大礼包】送你Python自学大礼包

哈喽,大家好。

今天看到Kaggle上有一个预测世界杯比赛结果的项目,截至目前 4 场比赛预测结果全中。

今天把源码研究了一下,做了中文注释,给大家分享下。

文末有源码和数据集的获取方式。

提醒大家,本文只做学习交流使用,不做决策参考,更不要盲目赌球。

1. 获取数据集

数据集使用 1872-2022年国际足球比赛数据和FIFA 1992-2022年球队排名数据。

比赛数据
排名数据

虽然有数据集很大,但作者只用了 2018-2022年的数据作为训练数据。

df =  pd.read_csv("./kaggle/input/international-football-results-from-1872-to-2017/results.csv")

df = df[(df["date"] >= "2018-8-1")].reset_index(drop=True)

2. 特征工程

选取的特征要能够较好地反映预测结果,如:

  • 世界杯球队的平均进球数
  • 球队最近5场比赛的平均进球数
  • 世界杯球队的平均犯规数
  • 球队最近5场比赛的平均犯规数
  • 球队在世界杯中 FIFA 平均排名
  • 球队在最近5场比赛中 FIFA 平均排名
  • FIFA积分
  • 最近5场FIFA积分
  • 比赛得分
  • 最近5场比赛积分
  • Mean game points by rank faced at the Cycle.
  • Mean game points by rank faced at last 5 games.

通过观察这些特征的小提琴图,筛选对预测结果又很强区分的特征。

对于值比较小的特征,可以尝试用箱型图观察。

最终生成的特征为:

最终特征如下:

  • rank_dif
  • goals_dif
  • goals_dif_l5
  • goals_suf_dif
  • goals_suf_dif_l5
  • dif_rank_agst
  • dif_rank_agst_l5
  • goals_per_ranking_dif
  • dif_points_rank
  • dif_points_rank_l5
  • is_friendly

3. 建模

作者选择了随机森林GradientBoosting模型进行训练,并对比他们的 AUC

GradientBoosting
随机森林

最终选取GradientBoosting作为预测模型。

4. 预测

预测需要获取 2022 世界杯比赛数据。

作者通过爬取维基百科解析出比赛数据,考虑到国内很多朋友无法访问维基百科。源代码中我已经将比赛数据放在本地文件中。

kaggle地址:https://www.kaggle.com/code/sslp23/predicting-fifa-2022-world-cup-with-ml/notebook

  1. 腾讯员工痛诉从阿里来的同事秀“内卷”

  2. 几行 Python 代码就可以提取数百个时间序列特征

  3. Python 操作 Excel 数据的封装函数

  4. 用Python预测了一下世界杯决赛最后的赢家,发现准确率还挺高!!

  5. Python和Excel的完美结合:常用操作汇总(案例详析)



在看

浏览 47
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报