Python预测世界杯比赛结果,要是在爆冷我真的会谢

本文介绍了一种利用机器学习预测世界杯比赛结果的方法。采用2018-2022年国际足球比赛数据及FIFA排名数据,通过特征工程提取关键指标,并使用GradientBoosting模型进行训练和预测。

前言

哈喽,大家好。

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

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

需要Python零基础学习资料的伙伴,可以在公众号【码农资料库】中回复【py】自行领取 包括以下学习资料:

① Python所有方向的学习路线图,清楚各个方向要学什么东西

Python课程视频,涵盖必备基础、爬虫和数据分析

Python实战案例,学习不再是只会理论

Python电子好书,从入门到高阶应有尽有

⑤ 华为出品独家Python漫画教程,手机也能学习 ⑥ 历年互联网企业Python面试真题,复习时非常方便

在这里插入图片描述

图片
(文末送读者福利)

文章目录

    • 技术提升
    • 1. 获取数据集
    • 2. 特征工程
    • 3. 建模
    • 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值