用技术记录世界杯2022

news2025/1/16 6:00:31

用技术记录世界杯【2022】

文章目录

      • 用技术记录世界杯【2022】
      • 前言
        • 1 项目介绍
        • 2 实验复现
          • 2.1 关于项目
          • 2.2 数据准备
          • 2.3 特征工程
        • 3 我的感受

前言

Hi,我是Ding Jiaxiong,好久不见(bushi,早上才更新了博客),

今天是2022 年12月 8日

在这里插入图片描述

2022年 卡塔尔 世界杯的第 18天

现在的排名情况是下面这样子的

在这里插入图片描述

作为一个 资深足球迷( bushi,没有冒犯的意思,我只认识内马尔、C罗和梅西),

当然回到这篇博客 的重点,为了与大家共享世界杯盛宴,CSDN 官方专门举办了这场世界杯征文大赛

哈哈,当然我只是想要那个专属勋章啦

回到正题,今天想要分享的就是一个 名为“使用 ML 预测FIFA 2022 世界杯”的开源项目。

1 项目介绍

项目名:Predicting FIFA 2022 World Cup with ML

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

在这里插入图片描述

就是它了,在kaggle 上面

2 实验复现

2.1 关于项目

项目的想法是用机器学习模拟 FIFA 2022 世界杯比赛,以预测比赛的获胜者。

该项目使用两个数据集:1872 年至 2022 年的国际足球成绩和 1992 年至 2022 年的国际足联世界排名

数据集地址:

【1872 年至 2022 年的国际足球成绩】

https://www.kaggle.com/datasets/martj42/international-football-results-from-1872-to-2017

在这里插入图片描述

【1992 年至 2022 年的国际足联世界排名】

在这里插入图片描述

项目作者使用了 Soccer World Cup 2018 Winner notebook 中使用的相同逻辑,

https://www.kaggle.com/code/agostontorok/soccer-world-cup-2018-winner

另一个项目,18年世界杯项目

在这里插入图片描述

将问题建模为一个 二分类问题。【嗯,胜负】

作者用它来更容易地分析模型的结果,所以模型预测主队获胜和客队平局/获胜。然后,为了去除客队优势,作者预测了客场和主场球队变化的结果(因为世界杯没有主场优势),并将两个预测的均值用作概率。

2.2 数据准备

准备数据以应用特征工程方法,这些方法将创建数据库以应用机器学习算法。

笔者的环境配置

在这里插入图片描述

笔者准备了一个新的 notebook

在这里插入图片描述

将其命名为 WorldCup,并把数据集上传到了 服务器中

import numpy as np
import pandas as pd
import os

for dirname, _, filenames in os.walk('kaggle/input'):
    for filename in filenames:
        print(os.path.join(dirname, filename))

在这里插入图片描述

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

df["date"] = pd.to_datetime(df["date"])

df.isna().sum()

在这里插入图片描述

df.dropna(inplace=True)

df.dtypes

在这里插入图片描述

使用的数据集将是2018年国际足联比赛,从2018年世界杯之后到2022年世界杯之前的最后一场比赛。我们的想法是只分析比赛的准备和分类到WC。

df.sort_values("date").tail()

在这里插入图片描述

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

df.sort_values("date").tail()

在这里插入图片描述

df.home_team.value_counts()

在这里插入图片描述

rank = pd.read_csv("kaggle/input/fifaworldranking/fifa_ranking-2022-10-06.csv")

rank["rank_date"] = pd.to_datetime(rank["rank_date"])

rank = rank[(rank["rank_date"] >= "2018-8-1")].reset_index(drop=True)

世界杯上的一些球队在排名数据集中有不同的名字。所以,它需要调整。

rank["country_full"] = rank["country_full"].str.replace("IR Iran", "Iran").str.replace("Korea Republic", "South Korea").str.replace("USA", "United States")

在这里插入图片描述

合并是为了得到一个数据集FIFA比赛和它的排名。

rank = rank.set_index(['rank_date']).groupby(['country_full'], group_keys=False).resample('D').first().fillna(method='ffill').reset_index()

df_wc_ranked = df.merge(rank[["country_full", "total_points", "previous_points", "rank", "rank_change", "rank_date"]], left_on=["date", "home_team"], right_on=["rank_date", "country_full"]).drop(["rank_date", "country_full"], axis=1)

df_wc_ranked = df_wc_ranked.merge(rank[["country_full", "total_points", "previous_points", "rank", "rank_change", "rank_date"]], left_on=["date", "away_team"], right_on=["rank_date", "country_full"], suffixes=("_home", "_away")).drop(["rank_date", "country_full"], axis=1)

df_wc_ranked[(df_wc_ranked.home_team == "Brazil") | (df_wc_ranked.away_team == "Brazil")].tail(10)

在这里插入图片描述

现在,我们已经准备好了数据,可以根据比赛结果和国际足联排名来创建功能。

2.3 特征工程

这里的想法是创建可能的特征,对预测足球比赛有影响。

根据直觉,我们认为具有影响的特征可能是:

  • 过去的比赛积分
  • 过去的进球和损失【失球】
  • 游戏的重要性(友好与否)
  • 球队排名
  • 队伍等级增加
  • 目标的实现和遭受取决于面对的排名

所以,我们要做的第一件事就是创建一个显示哪支球队赢了以及他们在比赛中得了多少分的功能。

df = df_wc_ranked

def result_finder(home, away):
    if home > away:
        return pd.Series([0, 3, 0])
    if home < away:
        return pd.Series([1, 0, 3])
    else:
        return pd.Series([2, 1, 1])

results = df.apply(lambda x: result_finder(x["home_score"], x["away_score"]), axis=1)

df[["result", "home_team_points", "away_team_points"]] = results

比赛积分为胜3分,平1分,负0分,与数据库中已经存在的国际足联排名积分不同。

此外,假设FIFA Rank积分和同一支球队的FIFA排名是负相关的,我们应该只使用其中一个来创建新功能。以下是对这个假设的验证:

import seaborn as sns
import matplotlib.pyplot as plt

plt.figure(figsize=(15, 10))
sns.heatmap(df[["total_points_home", "rank_home", "total_points_away", "rank_away"]].corr())
plt.show()

在这里插入图片描述

现在,我们将创建有助于创建特征的列:排名差异,在比赛中赢得的分数与球队面临的排名,以及比赛中的进球数差异。所有不是差异的特征都应该为两支球队(客场和主场)创造。

df["rank_dif"] = df["rank_home"] - df["rank_away"]
df["sg"] = df["home_score"] - df["away_score"]
df["points_home_by_rank"] = df["home_team_points"]/df["rank_away"]
df["points_away_by_rank"] = df["away_team_points"]/df["rank_home"]

为了创建特征,作者将在主队和客场队的数据集中分离数据集,统一它们并计算过去的比赛值。之后,作者将再次分离并合并它们,检索原始数据集。这个过程优化了特性的创建。

home_team = df[["date", "home_team", "home_score", "away_score", "rank_home", "rank_away","rank_change_home", "total_points_home", "result", "rank_dif", "points_home_by_rank", "home_team_points"]]

away_team = df[["date", "away_team", "away_score", "home_score", "rank_away", "rank_home","rank_change_away", "total_points_away", "result", "rank_dif", "points_away_by_rank", "away_team_points"]]

home_team.columns = [h.replace("home_", "").replace("_home", "").replace("away_", "suf_").replace("_away", "_suf") for h in home_team.columns]

away_team.columns = [a.replace("away_", "").replace("_away", "").replace("home_", "suf_").replace("_home", "_suf") for a in away_team.columns]

team_stats = home_team.append(away_team)

team_stats_raw = team_stats.copy()

现在,我们有了一个数据库,可以创建预测功能。它们将是:

  • Mean goals of the team in World Cup Cycle.
  • Mean goals of the team in last 5 games.
  • Mean goals suffered of the team in World Cup Cycle.
  • Mean goals suffered of the team in last 5 games.
  • Mean FIFA Rank that team faced in World Cup Cycle.
  • Mean FIFA Rank that team faced in last 5 games.
  • FIFA Points won at the cycle.
  • FIFA Points won in last 5 games.
  • Mean game points at the Cycle.
  • Mean game points at last 5 games.
  • Mean game points by rank faced at the Cycle.
  • Mean game points by rank faced at last 5 games.

OK,到这里,当我谷歌第一条的英文意思的时候,我就不想再往下写了,因为有大佬已经写了!!!!我真的枯死

这里我直接附上链接吧,大家多多支持大佬的好文

https://blog.csdn.net/weixin_62338855/article/details/128023854

在这里插入图片描述

3 我的感受

分享一些 轻松的事情吧,

如果要问起来在 世界杯期间学习了啥 技术,其实就在昨天吧,我把Go 基础重新学了一遍,已经结束了

在这里插入图片描述

马上就要再进入Go 的高并发了,之前学过一遍,但是间隔时间太长了,而且也没怎么用,因为中间搞Java 去了

看着官方给的活动创作方向,画足球就不了,如果说回忆 第一次我自己踢足球的话,那是在起码 5年前了,

在这里插入图片描述

在这里插入图片描述

OK,是2017年,那个时候高二吧,小班足球赛,我作为替补,虽然到比赛结束都没上过场,但是那个 时候确实很多人很多事 都 … ,死去的 回忆突然攻击我,

咋子说呢

今天在抖音 看到一段“ 很美” 的话

这三年最大的收获

就是遇到了那些形形色色的人们

虽然他们有的让我身陷险境

有的帮我它逃出泥沼

但就是这样

才让当年那个自大的我清醒了许多

我现在觉得这里无比强大

3年之约对我来说

就只不过是要完成一个年少轻狂的约定

给自己的这段成长

画上了句号而已

当年一起玩耍、一起上学上课上厕所的朋友们,希望你们一切都好。

在这里插入图片描述

路漫漫其修远兮,吾将上下而求索

我们一定能够成为我们想要去成为的人。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/74379.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

未部署ssl证书,您的账号、密码或被窃取!

浏览网页查找信息时&#xff0c;您有没有注意到有些网站的网址是以https&#xff1a;//开头的&#xff0c;有些网址是http&#xff1a;//开头&#xff1f;有时还会显示一个突出的警告页面&#xff0c;表明网站是“不安全的”可能会窃取您的账号、密码&#xff0c;骗取财产等。 …

Mybatis-Plus的@Version注解:使用updateBatchById方法引发的问题

正常情况下&#xff0c;我们想要的是&#xff0c;当乐观锁不对的时候要一个反馈&#xff0c;例如&#xff1a;版本号不一致&#xff0c;请刷新页面重新获取数据。 在没有Version注解的时候&#xff0c;一般我们会进行显示校验。例如下图&#xff1a; updateById方法使用演示 …

数商云SRM供应商系统售后模块解析 | 助力汽修企业打造高效SRM服务管理体系

随着我国汽车保有量的持续增长&#xff0c;汽车维修行业不断地向社会化方向发展&#xff0c;汽修行业从产品型的行业转变为服务型行业&#xff0c;成为一个社会化的、人才专业型、技术密集型的和相对独立的行业&#xff0c;发展势头迅猛&#xff0c;据统计&#xff0c;我国的汽…

跨主机访问——docker

当你有若干个容器之后,你可能就希望实现容器的跨机部署访问了,比如aspnetcore在一台host上,mysql在另外一个host上,如果要实现这样的功能,需要你 借助docker自带的overlay网络模型了。 一: overlay网络模型 要想快速的搭建overlay网络,你可以通过docker默认的swarm集群…

代码随想录Day45|70.爬楼梯(进阶)、322.零钱兑换、279.完全平方数

文章目录70.爬楼梯&#xff08;进阶&#xff09;322.零钱兑换279.完全平方数70.爬楼梯&#xff08;进阶&#xff09; 文章讲解&#xff1a;代码随想录 (programmercarl.com) 题目链接&#xff1a;programmercarl 题目&#xff1a; 假设你正在爬楼梯。需要 n 阶你才能到达楼…

【C#基础学习】第十六章、枚举

目录 枚举 1.枚举的补充 1.1底层类型 1.2 设置显式值 1.3 枚举成员赋值顺序 2.位标志 2.1 Flags特性 枚举 枚举的定义&#xff1a; 枚举是由程序员自定义的值类型。它只有一种类型成员&#xff1a;命名的整数值常量。枚举成员都有一个底层类型的常量值。第一个枚举成员的…

【场景削减】拉丁超立方抽样方法场景削减(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Linux搭建RabbitMQ集群环境

文章目录环境说明Erlang安装下载安装包安装验证RabbitMQ安装下载安装包安装启动RabbitMQ设置开机自动启动安装管理界面创建用户登录管理界面集群配置前提条件构建erlang集群高可用镜像集群配置环境说明 操作系统&#xff1a;CentOS7Erlang版本&#xff1a;21.3RabbitMQ版本&am…

信而泰耦合测试-网络测试仪实操

一、耦合测试原理 1.产生背景​ 常用测试无线设备过程中&#xff0c;将无线设备置于屏蔽箱中&#xff0c;通过无线网卡连接并运行iperf等类似软件的方式检测所述无线设备的吞吐量。 相关技术中将所述无线设备置于所述屏蔽箱中的检测方法&#xff0c;由于所述屏蔽箱存在信号反…

【C语言】字符串函数(二)

目录 一、strncpy函数(字符串拷贝) 1、strncpy函数的用途 2、strncpy函数的使用 二、strncat函数(字符串追加) 1、strncat函数的用途 2、strncat函数的使用 三、strncmp函数(两个字符串比较) 1、strncmp函数的用途 2、strncmp函数的使用 四、strstr函数(查找字符串) 1、strstr函…

2022年底总结(被阿里捞的第1、2、3...次)

前言 自从去年因为个人原因没有去阿里淘系&#xff0c;后面有几次阿里同学问我有没有意向去阿里上班。其实我内心是很激动的&#xff0c;在人才库能被捞也是别人的认可&#xff0c;这个是值得骄傲的&#xff0c;然后需要继续保持自己专研技术的精神以及不断进步的意识。 当然博…

ChatGPT 大智近妖,从宇宙人生到手搓光刻机,从哄女友到写年终总结我们聊得非常开心,反而让人越来越忧心

文章目录宇宙人生问&#xff1a;你觉得人生的意义是什么&#xff1f;问&#xff1a;你觉得思维意识到底是什么问&#xff1a;我之前的两个问题大概有多少人问过你&#xff1f;问&#xff1a;宇宙的边界在哪里&#xff1f;手搓狠活怎么实现量子计算怎么制造一个光刻机怎么制作核…

多谐振荡器

三个非门首尾相接形成环&#xff0c;在理想情况下&#xff0c;无法形成振荡 门一定是存在传输延迟时间的&#xff0c;所以当高电平变成低电平的时候&#xff0c;必然会经过传输延迟时间 所以当反过来发生翻转的时候&#xff0c;经过了三倍的状态延迟时间 震荡的周期是六个传输…

基于SARIMA、XGBoost和CNN-LSTM的时间序列预测对比

利用统计测试和机器学习分析和预测太阳能发电的性能测试和对比 本文将讨论通过使用假设测试、特征工程、时间序列建模方法等从数据集中获得有形价值的技术。我还将解决不同时间序列模型的数据泄漏和数据准备等问题&#xff0c;并且对常见的三种时间序列预测进行对比测试。 介…

RNSScreenStackHeaderConfig“ was not found in the UIManager.解决办法!!亲测有效

Invariant Violation: requireNativeComponent: "RNSScreenStackHeaderConfig" was not found in the UIManager. 原因&#xff1a;RN项目中&#xff0c;开发服务器端已经使用npm i下载了某个模块&#xff0c;但是只有服务器端有&#xff0c;该模块并没有打包安装到手…

Cache与MMU的爱恨纠缠

首先声明本文不准备详细地介绍Cache和MMU的概念和用法&#xff0c;主要是为了厘清两者之间的相互关系和依赖。 1. MMU管理cache访问属性 在没有MMU的时候&#xff0c;cache本身的模型比较简单&#xff0c;如下所示&#xff0c;在使用的时候重点关注Cache数据的一致性问题。 …

linux高可用小知识点汇总-行云管家

不少运维小伙伴对于linux高可用相关知识不是很了解&#xff0c;今天我们小编就给大家汇总了一些&#xff0c;希望可以加深大家的了解。仅供参考哦&#xff01; linux高可用小知识点汇总-行云管家 一、Linux是什么系统&#xff1f; 【回答】&#xff1a;Linux全称GNU/Linux&am…

小蓝本 第一本《因式分解技巧》 第二章 应用公式 笔记(第二天)

小蓝本 第一本《因式分解技巧》 第二章 应用公式 笔记&#xff08;第二天&#xff09;前言二代——应用公式常见公式公式场景公式分类基本间接推导公式(9)、(10)的推导问题分解方法方法1方法2公式推导总结&#xff1a;对照思想小技巧与注意事项习题2题目题解经验前言 第二天op…

基于贝叶斯网络的考虑不确定性的短期电能负荷预测(Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

元年SecDevOps的实践之路

随着DevOps的发展&#xff0c;企业的数字化转型的需求也愈发强烈&#xff0c;DevOps大幅提升了企业应用迭代的速度。但同时&#xff0c;安全如果不能跟上步伐&#xff0c;不仅会抵消DevOps变革带来的提升&#xff0c;拖慢企业数字化转型的进程&#xff0c;还会导致漏洞与风险不…