当前位置: 首页 > news >正文

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

哈喽,大家好。

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

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

图片

文章目录

    • 技术提升
    • 1. 获取数据集
    • 2. 特征工程
    • 3. 建模
    • 4. 预测

技术提升

本文由技术群粉丝分享,项目源码、数据、技术交流提升,均可加交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友

方式①、添加微信号:dkl88191,备注:来自CSDN +研究方向
方式②、微信搜索公众号:Python学习与数据挖掘,后台回复:加群

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)基本知识、C语言常用关键字、OLED
  • 用Python采集球员信息,成功预测到了球赛胜负?
  • OpenCV图像处理——(实战)答题卡识别试卷
  • 2022亚太数学杯数学建模竞赛A题(思路分析......)
  • 为了提前预测比赛结果,于是我用Python获取比赛球员数据进行分析,结果...
  • 机器学习之特征提取
  • 第 46 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(南京),签到题5题
  • 线代——求逆矩阵的快捷方法
  • 分布式存储之 etcd 的集群管理
  • std::unique_ptr(基础和仿写)
  • UG旋钮盖模具设计与加工
  • 【JAVA高级】——封装JDBC中的DaoUtils工具类(Object类型方法)
  • MYSQL事务原理分析
  • ORB-SLAM3算法学习—Frame构造—基于SAD滑窗的双目特征匹配
  • ➹使用webpack配置多页面应用(MPA)
  • angular学习第一篇-----环境搭建
  • Django 博客开发教程 8 - 博客文章详情页
  • gitlab-ci配置详解(一)
  • Hexo+码云+git快速搭建免费的静态Blog
  • JavaScript实现分页效果
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • WebSocket使用
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 码农张的Bug人生 - 见面之礼
  • 学习使用ExpressJS 4.0中的新Router
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #Spring-boot高级
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (ZT)薛涌:谈贫说富
  • (分类)KNN算法- 参数调优
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (九十四)函数和二维数组
  • (三)c52学习之旅-点亮LED灯
  • (转)EOS中账户、钱包和密钥的关系
  • .gitignore文件---让git自动忽略指定文件
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .NET Core跨平台微服务学习资源
  • .net core使用ef 6
  • .net wcf memory gates checking failed
  • .Net的C#语言取月份数值对应的MonthName值
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .NET基础篇——反射的奥妙
  • @Validated和@Valid校验参数区别
  • @Valid和@NotNull字段校验使用
  • [04]Web前端进阶—JS伪数组
  • [BT]小迪安全2023学习笔记(第15天:PHP开发-登录验证)
  • [BZOJ1060][ZJOI2007]时态同步 树形dp