用Python模拟2018世界杯夺冠之路(共五则范文).docx 立即下载
2025-08-28
约1.8万字
约27页
0
30KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

用Python模拟2018世界杯夺冠之路(共五则范文).docx

用Python模拟2018世界杯夺冠之路(共五则范文).docx

预览

免费试读已结束,剩余 22 页请下载文档后查看

10 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

用Python模拟2018世界杯夺冠之路(共五则范文)

第一篇:用Python模拟2018世界杯夺冠之路用Python模拟2018世界杯夺冠之路2018俄罗斯世界杯小组抽签出炉,几家欢喜几家愁。世界杯从来就不乏看点,东道主俄罗斯能走多远、德国能否卫冕、西班牙是否有望东山再起、两位球王谁更接近大力神杯...距世界杯开幕还有半年时间,一切都是未知数,不过整个赛程已定,我完全按照赛程模拟了所有64场比赛比分1000次,得出了A~H组各自的出线形势、每支队伍进四强的概率、以及最终的夺冠概率。一切结果,先卖个关子。做这件事分四个步骤:爬数据计算球队进球、失球均值,构建泊松模型模拟1000次世界杯赛事统计出线概率、夺冠概率、四强概率爬数据上一篇文章用Python分析本赛季英超争四形势提到从OPTA抓取数据,由于接口权限不对外公开,现在我改用公开的免费数据,方便大家自行抓取。这次所有比赛数据、赛程数据是我从球探网上抓的。利用selenium库,我将每只参赛国家队最近一年的比赛数据都抓取下来,保存成Pandas库的数据框。举个例子,这是葡萄牙国家队的页面,以及下面一张截图是抓下来存储的干净数据框。葡萄牙国家队葡萄牙国家队的Pandas数据框计算球队进球、失球均值,构建泊松模型泊松模型是模拟比赛的核心算法,理论在用Python分析本赛季英超争四形势文章中介绍过。针对国家队,我做了以下修改:若进球数4'eeimg='1'>,强制。这是因为热身赛双方实力差距过大,德国8:0马来西亚,这种差距在世界杯决赛圈几乎不存在。亚洲球队与欧洲球队水平存在一个差异值,需要整体乘以一个系数。韩国场均进2球,相比德国场均1.5球,韩国的对手亚洲球队居多,德国打过欧洲杯对手实力不俗,韩国的场均2球必须打折扣。得到计算结果,按进攻实力排序,欧洲豪强与南美双雄占据前列。(尾部的球队没有列出来)模拟1000次世界杯赛事先解决如何模拟一场比赛。淘汰赛与小组赛不同,如果打成平局必须进行点球大战,决出胜负。点球大战就设定各自50%概率晋级,下面这个simulate_match函数传入knockout参数为True时,就会激发这个机制,返回晋级的球队名。如果不是knockout,就是小组赛,就是输出模拟的比分。importscipyasspimportpandasaspd#读取球队进球率、失球率参数team_strength=pd.read_csv('球队攻防参数.csv')#每一场球生成几次泊松随机数,次数越多随机因素越小n_sim=5defsimulate_match(team_A,team_B,knockout=False):'''模拟一场比赛,返回主队进球数、客队进球数'''#获取比赛双方进球率、失球率home_scoring_strength=(team_strength.loc[team_A,'alpha']+team_strength.loc[team_B,'beta'])/2away_scoring_strength=(team_strength.loc[team_A,'beta']+team_strength.loc[team_B,'alpha'])/2#模拟n次比赛进球数取众数fs_A=sp.stats.mode(poisson.rvs(home_scoring_strength,size=n_sim))[0][0]fs_B=sp.stats.mode(poisson.rvs(away_scoring_strength,size=n_sim))[0][0]print(team_A,fs_A,team_B,fs_B)#进入淘汰赛,若平局,点球大战晋级概率50%:50%ifknockout:iffs_A==fs_B:return[team_A,team_B][sp.random.randint(0,2)]eliffs_A>fs_B:returnteam_Aelse:returnteam_Breturnfs_A,fs_B#例如:simulate_match('阿根廷','尼日利亚',knockout=True)>>阿根廷接下来是赛程,小组赛有6场每个组,8组共48场。按照赛程我手动写入列表里,比如A组的比赛按顺序,对战双方分别是这样:#小组每场比赛对阵双方:[主队,客队]fixture_A=[['俄罗斯','沙特阿拉伯'],['埃及','乌拉圭'],['俄罗斯','埃及'],['乌拉圭','沙特阿拉伯'],['沙特阿拉伯','埃及'],['俄罗斯','乌拉圭']]然后建了一个类,每个组分别各自初始化自己的类,传入参数fixture就是上面创建的赛程,只需调用play函数就可以模拟该小组6场比赛比分。self.table是小组积分榜,保存下来每次模拟的小组头两名球队名
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

用Python模拟2018世界杯夺冠之路(共五则范文)

文档大小:30KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用