文档章节

根据四万场比赛结果,我给今年世界杯每场比赛计算了胜率,冠军竟然是…

crossin
 crossin
发布于 06/15 01:24
字数 1651
阅读 153
收藏 7
点赞 0
评论 0

四年一度的世界杯本周就要开赛啦!如果你和我一样是一名伪球迷,请先了解以下注意事项:

  1. 本届世界杯是在俄罗斯举办
  2. 一共32只球队分8个小组,每组前2名进入淘汰赛
  3. 比赛持续一个月
  4. 共64场比赛在俄罗斯多个城市举行
  5. 没有中国队,因为没出线
  6. 没有意大利队、荷兰队,因为也没出线
  7. 是国家队间比赛,因此没有巴萨、皇马、曼联、拜仁……
  8. 比赛常规时间,上下半场各45分钟
  9. 淘汰赛阶段常规时间打平,进入30分钟加时赛,再打平才是点球大战
  10. 梅西是阿根廷的,C罗是葡萄牙的,内马尔是巴西的,他们都不是西班牙的
  11. 大罗、小罗、卡卡、贝克汉姆都不参加
  12. 世界杯是足球比赛,没有哈登、库里、杜兰特


每到世界杯,一项保留节目就是预测当年冠军,各路大神啦、名嘴啦、章鱼啦、猫猫狗狗啦都少不了。这次我也来预测一把。但我不懂球啊怎么办?没关系,我可以用程序!(反正都是蒙呗)


数据来源

这份数据来自 Kaggle,是从1872年到2018年共38929场比赛的结果。我们这次就用这份数据作为预测的基础。

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

可从文末项目中获取。

另外介绍下 Kaggle,它一个数据科学竞赛平台,强烈建议研究数据分析、机器学习这方面的同学多上去玩耍。


建立模型

有了这么多历史比赛数据,要怎么来预测呢?我建立了如下几条规则:

  1. 太久远的数据对于当下球队的参考价值有限,所以设定一个起始年限
  2. 查找对阵双方从起始年限至今的对战数据,并计算
    胜利概率=(胜利场次+平局场次/2)/总场次
  3. 小组赛阶段,胜利概率超过一定阈值(比如0.7)的球队赢,否则为平局
  4. 淘汰赛阶段,胜利概率大的球队赢
  5. 如果两队从起始年限至今没有进行过比赛,就往前再多选取N年的数据(一般出现在参加大赛较少的球队)
  6. 如果仍然没有交手过,则以各自对阵本届杯赛其余所有球队的战绩为基础,分别计算胜利概率。概率高的球队胜。但如果是小组赛,概率差必须高过一定阈值(比如0.1),否则为平局


赛程模拟

基于以上的规则模型,我们导入数据,通过 Python 程序模拟本届世界杯32支球队的64场比赛。

这样就“预测”了比赛的结果。


预测结果

所以,究竟这份代码 run 出怎样的结果?

因为不同的起始年限和平局阈值会得到不一样的结果。我尝试使用 2006~2016 11个不同年限,和4组N的取值,得到共44组比赛结果。最终夺冠的次数是:

巴西 23 次
西班牙 12 次
德国 6 次
英格兰 3 次

看来,巴西队还是毋庸置疑的夺冠热门。难怪各大菠菜网站都给他们开出最低的赔率。

但是抛开巴西队不谈,在我的结果中,英格兰队的表现异常得好。这主要源于他们近几年对战巴西的良好战绩:1胜2平0负。而相比之下,阿根廷恐怕又要“没戏”了。

另外,塞内加尔伊朗值得关注下,他们这几年对战其他球队的战绩不错,或许会成为黑马:

2012年以来

塞内加尔 4胜3平1负
伊朗 5胜6平3负


历史战绩查询工具

当然,我这个模型是很粗糙的。不过本来嘛,足球是圆的,拿历史数据预测比赛结果也就是娱乐一下,给看球增加点乐趣。如果你有自己的规则想实现,也可以在我代码的基础上进行修改。代码和数据的获取方法见文末说明。

另外,我把部分数据导出,做了一个在线查询的小工具,方便你直接查询任意两支球队之间的对战历史。

点击进入:历史战绩在线查询工具


可以选择不同的年限。同时我还自创了一套“赔率”计算,以供参考。

主队综合胜率=总场数/(主队胜场+客队负场)

因为这个赔率模型基于的更多是历史战绩,而强队的对手多是强队,弱队的对手多是弱队,导致赔率上的差异并没有市面上的那么大,但总的来看也基本符合胜负关系。如果你发现有某场比赛计算出的结果和别人开出的结果差异很大,那或许这会是场会爆冷的比赛哦


预测结果仅供参考,如有雷同纯属巧合


最后,我突然想到,咱们国足对这32支球队的战绩如何呢?如果在另一个平行宇宙中有幸参赛,大概会是个什么结果?于是……

2014年以来:2胜, 5平, 8负
2002年以来:8胜, 19平, 35负
似乎只有和从未交过手的巴拿马在战绩上可以一战。


好吧,当我没说。还是让我们安心享受世界杯的欢乐吧!


本文中使用到的数据和代码,可在公众号(Crossin的编程教室)里获取,回复关键字 世界杯


════
其他文章及回答:

如何自学Python | 新手引导 | 精选Python问答 | Python单词表 | 区块链 | 人工智能 | 双11 | 嘻哈 | 爬虫 | 排序算法 | 我用Python | 高考

欢迎搜索及关注:Crossin的编程教室

© 著作权归作者所有

共有 人打赏支持
crossin
粉丝 2
博文 80
码字总数 123939
作品 0
闵行
程序化套利:天下有没有稳赚不赔的买卖?

本届世界杯即将迎来大结局,四强多少有些出乎赛前的意料。最终是否会有新的冠军出现,大家拭目以待。 我们之前有两篇文章谈到了世界杯(根据四万场比赛结果,我给今年世界杯每场比赛计算了胜...

crossin
07/11
0
0
算法 PK 猫咪 | 章鱼保罗后继竟然是只猫?

简评:一只名叫阿喀琉斯(Achilles)的白猫一边小声叫着,一边慵懒地在分别插有俄罗斯和沙特阿拉伯国旗的食盆间踱步。这只看起来并不出众的小猫住在俄罗斯圣彼得堡埃尔米塔日博物馆(State H...

极光推送
07/10
0
0
2018世界杯冠军是谁?来看看AI预测的结果

  2010年南非世界杯,神奇的章鱼保罗因成功连续预测了8场赛事而名扬世界。   八年,弹指一挥间。这一届的世界杯冠军又将花落谁家?显然,章鱼保罗已然指望不上了,但新的技术已经迫不及待...

深度学习
06/15
0
0
爆冷让人心慌?如何让「下注」稳赚不赔?

很多人对足球并不感冒,只是稍微有些「赌性」,所以喜欢盯着比赛的赔率看。 世界杯小组赛已经进入尾声,两个星期的赛程连连爆冷,让我这个穷酸的「保守派」把几百块私房钱全都赔进去了,那些...

我是一个程序猿
07/02
0
0
勒夫靠它赢得世界杯 扒一扒足球与数据分析的那些事

世界杯未必是足球比赛中最为精彩的赛事,但热度绝对是最高的。2018年俄罗斯世界杯即将开幕,据估计,将有超过150万名球迷涌入俄罗斯境内观看比赛。作为东道主,俄罗斯也为这些球迷的到来做好...

DataHunter小数
06/13
0
0
007lizhen/QT_GuoZuChuXianFenXi

QT_GuoZuChuXianFenXi 利用QT实现中国男足国家队在2017年9月进行的“世亚预”小组赛的出线条件,得到符合条件的各个球队间的比分。 程序介绍: 1、Team类: 这里,Team类主要具有两个功能:(...

007lizhen
2017/10/23
0
0
从大数据看2018世界杯 —冷门迭爆,你热爱的球队回家了吗?

2018年俄罗斯世界杯作为四年一度的足球盛宴,不管是不是球迷,在这个夏天都将点燃无数人的体育竞技热情。但本届世界杯爆冷不断,一首“凉凉”刚送给了输给韩国队的日耳曼战车,大热夺冠种子队...

Mob说数据
07/11
0
0
IT 人的足球盛宴,中场答题赢取 15 件世界杯正版球衣

今夜,世界杯绿茵烽火即将重燃,32 支球队已整装待发。而七牛云「世界杯最强应援团」也整「球衣」待发,为大家准备了 15 件世界杯正版球衣和各种精美礼品!开启「夺宝征集令」趣味竞答,让比...

七牛云
06/20
0
0
使用机器学习预测2018年世界杯足球赛

2018年世界杯正进行的如火如荼,日本、塞内加尔相继爆冷战胜了强大的对手,东道主俄罗斯依旧保持开挂状态,碾压拥有萨拉赫的埃及队,豪取两连胜。在足球的世界里,没有强者恒强的定律,这或许...

小丑丁丁
06/29
0
0
瑞银预测德国赢,高盛“赌”巴西,谁才是世界杯预测之王?

  人类天生对于未来可能会发生的事一直有很浓厚的兴趣,古代有夜观天象的预言家,当代则有各式各样的预测方式如统计分析、大数据、人工智能,最近全球最火的预测莫过于在俄罗斯开打的 2018...

DeepTech深科技
06/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

自定义OkHttp的UA

背景 上次的问题很明显 由于我们的ua清一色OkHttp导致快速定位到内部应用。 既然如此我们是否考虑可以在UA上做点手脚。 自定义我们的UA呢??? 分析 首先UA在 均为okhttp/3.2.0 大概率是由于...

Mr_Qi
14分钟前
0
0
【scikit-learn】01:使用案例对sklearn库进行简单介绍

sklearn学习笔记:Quick Start 源地址:http://scikit-learn.org/stable/tutorial/basic/tutorial.html # -*-coding:utf-8-*-''' Author:kevinelstri Datetime:2017.2.16'''......

wangxuwei
18分钟前
0
0
Linux Kernel 4.16 系列停止维护,用户应升级至 4.17

知名 Linux 内核维护人员兼开发人员 Greg Kroah-Hartman 近日在发布 4.16.18 版本的同时,宣布这是 4.16 系列的最后一个维护版本,强烈建议用户立即升级至 4.17 系列。 Linux 4.16 于 2018 年...

问题终结者
20分钟前
0
0
Apache配置时.htaccess失效不起作用的原因分析

.htaccess 失效的原因 1. 重写规则有问题,检查自己的重写规则 2.Apache配置问题,配置中没有配置启用 rewrite a2enmod rewrite 3.网站配置文件没有启用配置需要配置 000-default.conf <Dire...

TU-DESGIN
40分钟前
1
0
两个求最大公约数C/C++算法实现

#include<stdio.h> #include<time.h> #include <iostream>using namespace std;//求最大公约数 LCD(Largest Common Division)//短除法 //m=8251, n=6105; int LCD_ShortDiv(int m, ......

失落的艺术
46分钟前
1
0
QueryPerformanceCounter

windows的Sleep函数,睡眠线程指定毫秒数,可以用来做毫秒延时。 对于微秒延时,没有一个现成的函数,但是可以通过 QueryPerformanceFrequency QueryPerformanceCounter 来间接实现。原理就是...

开飞色
今天
1
0
log4j2使用AsyncRoot不显示行号问题处理

<AsyncRoot level="info" includeLocation="true"> <AppenderRef ref="File"/></AsyncRoot><!--1.异步logger,还需要在pom.xml中添加disruptor的依赖。2.includeLocation结合异......

小翔
今天
3
0
安卓手机上 K 歌,声音延迟怎么解决?

这篇文章可以为你提供一个解决录音和播放同步问题的思路,而且解决了声音从手机传输到耳机上有延时的问题。 初识音频 在开始之前,我先简单介绍一下音频相关的基础知识,方便下文理解。 我们...

编辑部的故事
今天
2
0
使用token实现在有效期内APP自动登录功能

使用token实现在有效期内APP自动登录功能 http://sevennight.cc/2016/07/19/auto_login_impl.html

风云海滩
今天
2
0
Spring Boot集成RabbitMQ发送接收JSON

默认情况下RabbitMQ发送的消息是转换为字节码,这里介绍一下如何发送JSON数据。 ObjectMapper 最简单发送JSON数据的方式是把对象使用ObjectMapper等JSON工具类把对象转换为JSON格式,然后发送...

小致dad
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部