四年一度的世界杯本周就要开赛啦!如果你和我一样是一名伪球迷,请先了解以下注意事项:
每到世界杯,一项保留节目就是预测当年冠军,各路大神啦、名嘴啦、章鱼啦、猫猫狗狗啦都少不了。这次我也来预测一把。但我不懂球啊怎么办?没关系,我可以用程序!(反正都是蒙呗)
数据来源
这份数据来自 Kaggle,是从1872年到2018年共38929场比赛的结果。我们这次就用这份数据作为预测的基础。
https://www.kaggle.com/martj42/international-football-results-from-1872-to-2017/data
可从文末项目中获取。
另外介绍下 Kaggle,它一个数据科学竞赛平台,强烈建议研究数据分析、机器学习这方面的同学多上去玩耍。
建立模型
有了这么多历史比赛数据,要怎么来预测呢?我建立了如下几条规则:
赛程模拟
基于以上的规则模型,我们导入数据,通过 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的编程教室 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有