疯了! Python 成功预测前三场比赛,快看今天的?(附代码及比赛时间表)

640?wx_fmt=jpeg

【捷报时间】


    

人工智能(python代码)已成功预测比赛结果列表:


  1. 6月14日  俄罗斯胜

    今晚11点2018世界杯来了,利用Python预测冠军(附全部代码和数据集)

  2. 6月15日  乌拉圭胜

    【20点埃及 VS 乌拉圭/23点摩洛哥vs 伊朗】快看人工只能预测结果(附最全赛事时间表)

  3. .................................


请看今天的3场比赛预测.........


【直播时间】


今天的分析重点比赛是  2:00  ,直播的小组赛是葡萄牙 VS 西班牙,他们都是各自洲的传统强队,谁将获得这场比赛,赢得三分呢?


【阵容分析】


640?wx_fmt=jpeg

葡萄牙阵容


拥有C罗的球队,谁敢轻视他呢?更加需要注意的是,这支葡萄牙队远不止有C罗!贵为新科欧洲杯冠军,这支葡萄牙队的平均水平是06年之后最强的,再加上一个C罗,我们有理由相信,与西班牙的这场对决,会是一次火星撞地球般的碰撞。


这支葡萄牙国家队,在锋线上拥有C罗、曼城边锋博纳多席尔瓦、AC米兰前锋安德烈席尔瓦,这都是把握机会极强的球员,战术素养很高!西葡大战,如果葡萄牙的锋线能够把握住机会,他们完全能够有实力将西班牙拉下马!毕竟他们的后防在2016欧洲杯赛场已经证明能够经受住考验,2016欧洲,他们三场淘汰赛仅仅丢了波兰一个球,成功的零封了法兰西军团、黑马威尔士以及克罗地亚!


葡萄牙头号球星C罗是集速度、盘带、突破、射门、助攻、任意球、头球、远射、跑位、意识、力量、身体素质于一身的足球运动员。感觉已经没法形容C罗的伟大,即使年过三十,他依然保持着极强的求胜欲望和永不服输的精神,虽然葡萄牙整体实力并不算特别突出,但单凭一个C罗也可以让葡萄牙挤进争冠热门名单。

西班牙阵容

14年世界杯结束后,西班牙足球痛定思痛。比利亚、托雷斯等一众球员先后离开球队,他们开始了艰苦了重建之路。青黄不接的西班牙在2016年的欧洲杯上早早输给了意大利,止步16强,令人唏嘘不已。


不过,随着伊斯科的成长,巴斯克斯、阿森西奥等年轻小将的崛起,西班牙重新恢复了生机!10场世界杯欧洲区预选赛,西班牙取得了9胜1平的成绩,“预选赛之王”再次震惊世界。


目前这支西班牙,他们依然保留了中场的星光熠熠,伊涅斯塔、席尔瓦、蒂亚戈这样的中坚力量战力依旧,伊斯科萨乌尔同样有主力实力,中场依然是西班牙最让人侧目的立队根基;锋线上,迭戈科斯塔、阿森西奥、阿斯帕斯等人兼具高度速度,能够将中场的手术刀直塞化为进球;而在后防线上,皮克、拉莫斯、阿尔巴、卡瓦哈尔等四位皇马巴萨主力后卫坐镇,放眼足坛,无人能够企及;至于门将位置,德赫亚把守的大门,谁与争锋?


【人工智能分析】



使用了Kaggle的两个数据集,关注公众号并回复世界杯获得。我们将使用自1930年冠军开始以来所有参赛队的历史赛事结果。我们首先要对两个数据集进行一些探索性分析,做一些特征工程以选择最相关的特征进行预测,做一些数据处理,选择一个机器学习模型,最后将其部署到数据集上。


 载入数据收集

 
 

探索性分析

探索性分析和特征工程:涉及确定哪些特征与机器学习模型相关是任何数据科学项目中最耗时的部分。现在让我们将目标差异和结果列添加到结果数据集中。具体代码如下:

然后我们将处理一部分数据。其中包括只有尼日利亚参加的比赛。这将有助于我们关注哪些国家的特色有趣,并随后扩展到参加世界杯的国家。具体代码如下:

#lets work with a subset of the data one that includes games played by Nigeria in a Nigeria dataframe
df = results[(results['home_team'] == 'Nigeria') | (results['away_team'] == 'Nigeria')]
nigeria = df.iloc[:]
nigeria.head()

第一届世界杯是在1930年举办的。创建一个年份的专栏,选择1930年以后的所有比赛,具体代码如下:

#creating a column for year and the first world cup was held in 1930
year = []
for row in nigeria['date']:
    year.append(int(row[:4]))
nigeria ['match_year']= year
nigeria_1930 = nigeria[nigeria.match_year >= 1930]
nigeria_1930.count()


与所有参与团队创建一个数据框,具体代码如下

#narrowing to team patcipating in the world cup
worldcup_teams = ['Australia', ' Iran', 'Japan', 'Korea Republic', 
            'Saudi Arabia', 'Egypt', 'Morocco', 'Nigeria', 
            'Senegal', 'Tunisia', 'Costa Rica', 'Mexico', 
            'Panama', 'Argentina', 'Brazil', 'Colombia', 
            'Peru', 'Uruguay', 'Belgium', 'Croatia', 
            'Denmark', 'England', 'France', 'Germany', 
            'Iceland', 'Poland', 'Portugal', 'Russia', 
            'Serbia', 'Spain', 'Sweden', 'Switzerland']
df_teams_home = results[results['home_team'].isin(worldcup_teams)]
df_teams_away = results[results['away_team'].isin(worldcup_teams)]
df_teams = pd.concat((df_teams_home, df_teams_away))
df_teams.drop_duplicates()
df_teams.count()


然后,我们会进一步过滤结果数据框,以显示从1930年起仅在今年世界杯上的球队以及丢弃重复。在1930年之前创建年份栏和放弃游戏以及不会影响例如日期,主场比分,客场比赛,比赛,城市,国家,goal_difference和match_year等比赛结果的栏。具体代码如下:

#create an year column to drop games before 1930
year = []
for row in df_teams['date']:
    year.append(int(row[:4]))
df_teams['match_year'] = year
df_teams_1930 = df_teams[df_teams.match_year >= 1930]
df_teams_1930.head()


我们将使用逻辑回归,一种分类器算法。这个算法如何工作?通过使用逻辑函数估计概率,我可以测量分类因变量和一个或多个自变量之间的关系。具体来说就是累计物流配送。换句话说,逻辑回归试图预测给定可能影响该结果的一组数据点(统计量)的结果(胜利或损失)。在实践中这种方式的工作方式是你一次只用一组游戏来提供算法,同时提供上述“数据集”和游戏的实际结果。然后,模型会学习如何以每种数据的形式对游戏结果产生积极,消极影响以及在多大程度上影响游戏结果。给它足够的(好的)数据,并且你有一个可以用来预测未来结果的模型。模型与您提供的数据一样好。让我们来看看我们的最终数据框:我们现在准备将其传递给我们的算法,代码如下:

logreg = LogisticRegression()
logreg.fit(X_train, y_train)
score = logreg.score(X_train, y_train)
score2 = logreg.score(X_test, y_test)

print("Training set accuracy: ", '%.3f'%(score))
print("Test set accuracy: ", '%.3f'%(score2))

我们的模型在训练集上的准确率为57%,在测试集上的准确率为55%。这看起来不太好,但让我们继续前进。在这一点上,我们将创建一个数据框,我们将部署我们的模型。

我们将首先加载截至2018年4月的国际足联排名数据集和包含从这里获得的比赛小组赛阶段的小组赛阶段的数据集。国际足联排名较高的球队将被视为比赛的“最爱”球员,因此,由于世界杯比赛中没有“主队”或“客队”球队,他们将被定位在“home_teams”栏目下。然后,我们根据每个团队的排名位置将团队添加到新的预测数据集中。下一步将创建虚拟变量并部署机器学习模型。

现在你想知道我们会不会接受预测?这是太多的代码和谈话,你什么时候会向我们展示预测?紧紧抓住我们几乎在那里......

将模型部署到数据集。我们从将模型部署到组比赛开始。从小组赛开始,进行比较。具体代码和结果如下所示:

#group matches 
predictions = logreg.predict(pred_set)
for i in range(fixtures.shape[0]):
    print(backup_pred_set.iloc[i, 1] + " and " + backup_pred_set.iloc[i, 0])
    if predictions[i] == 2:
        print("Winner: " + backup_pred_set.iloc[i, 1])
    elif predictions[i] == 1:
        print("Draw")
    elif predictions[i] == 0:
        print("Winner: " + backup_pred_set.iloc[i, 0])
    print('Probability of ' + backup_pred_set.iloc[i, 1] + ' winning: ', '%.3f'%(logreg.predict_proba(pred_set)[i][2]))
    print('Probability of Draw: ', '%.3f'%(logreg.predict_proba(pred_set)[i][1]))
    print('Probability of ' + backup_pred_set.iloc[i, 0] + ' winning: ', '%.3f'%(logreg.predict_proba(pred_set)[i][0]))
    print("")

【小组赛预测结果】



1.  2点 葡萄牙 vs  西班牙  预测 西班牙 



Portugal and Spain
Draw
Probability of Portugal winning:  0.297
Probability of Draw:  0.351
Probability of Spain winning:  0.351

2.  18:00 点比赛是   法国  vs 澳大利亚  预测 法国 获胜


France and Australia
Winner: France
Probability of France winning:  0.628
Probability of Draw:  0.222
Probability of Australia winning:  0.151

3  21:00 阿根廷 vs 冰岛  预测 阿根廷

Argentina and Iceland
Winner: Argentina
Probability of Argentina winning:  0.822
Probability of Draw:  0.144
Probability of Iceland winning:  0.034

【最全赛事时间表】


640?wx_fmt=jpeg

每天分享预测结果,请关注公众号

人工智能与大数据生活(data_circle)

并 回复 世界杯 获得所有代码。

如果预测争取,别忘了打赏小弟哈哈


感谢您的阅读,祝您一天好心情!



长按二维码,关注我们

640?wx_fmt=jpeg

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值