前言
哈喽,大家好。
今天看到Kaggle
上有一个预测世界杯比赛结果的项目,截至目前 4 场比赛预测结果全中。
今天把源码研究了一下,做了中文注释,给大家分享下。
(文末送读者福利)
(文末送读者福利)
文章目录
-
- 技术提升
- 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
读者福利:知道你对Python感兴趣,便准备了这套python学习资料
对于0基础小白入门:
如果你是零基础小白,想快速入门Python是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以找到适合自己的学习方案
包括:Python永久使用安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习等习教程。带你从零基础系统性的学好Python!
零基础Python学习资源介绍
👉Python学习路线汇总👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取哈)
👉Python必备开发工具👈
温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python学习视频600合集👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉实战案例👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉100道Python练习题👈
检查学习结果。
👉面试刷题👈
资料领取
上述这份完整版的Python全套学习资料已经上传CSDN官方,朋友们如果需要可以微信扫描下方CSDN官方认证二维码输入“领取资料” 即可领取
好文推荐
了解python的前景:https://blog.csdn.net/SpringJavaMyBatis/article/details/127194835
了解python能做什么:https://blog.csdn.net/SpringJavaMyBatis/article/details/127196603