• 用Python预测世界杯球赛结果,还别说准确度还是蛮高的


    前言

    那么四年一度的世界杯即将要在卡塔尔开幕了,对于不少热爱足球运动的球迷来说,这可是十分难得的盛宴,而对于最后大力神杯的归属,相信很多人都满怀着期待,每个人心中都有不同的答案。

    今天我就通过Python数据分析以及机器学习等方式来预测一下谁能获得最后的冠军,当然最后预测出来的结果也仅仅只是作为一种参考,并不代表最后真实的结果。

    数据集的准备

    这里我们用到的数据集是来自kaggle的公开数据集,其中的一份数据集是2018年俄罗斯世界杯每小组各成员交手的记录,最后小编的预测基于该份数据集的基础之上,另外一份数据集则是从1870年开始到2022年截止,所有参赛球队的历史交手成绩汇总。那么我们首先导入要用到的模块以及导入数据集。

    模块和数据集的导入

    数据分析和可视化要用到的模块分别是pandas、matplotlib以及seaborn,而机器学习预测要用到的模块是sklearn,代码如下

    import pandas as pd 
    import numpy as np 
    import matplotlib.pyplot as plt 
    import seaborn as sns 
    import matplotlib.ticker as ticker 
    from sklearn.model_selection import train_test_split
    from sklearn.linear_model import LogisticRegression
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    着我们导入数据集

    world_cup = pd.read_csv("World_Cup_2018_Dataset.csv")results = pd.read_csv("results.csv")
    
    • 1

    我们可以通过head()方法来查看导入数据及的前几行,校验一下数据的导入是否成功,代码如下

    world_cup.head()
    
    • 1

    output
    在这里插入图片描述

    探索性数据分析和特征工程

    接下来我们要做的便是探索性数据分析和特征工程了,来对数据集有一个大致的了解,同时生成一些针对最后的预测大有帮助的特征出来,例如我们针对比赛当中的比分来判断比赛是谁胜谁负,或者是平局,代码如下

    winner = []
    for i in range(len(results["home_team"])):
        if results["home_score"][i] > results["away_score"][i]:
            winner.append(results["home_team"][i])
        elif results["home_score"][i] < results["away_score"][i]:
            winner.append(results["away_team"][i])
        else:
            winner.append("Draw")
    
    results["winning_team"] = winner
    results["goal_difference"] = np.absolute(results["home_score"] - results["away_score"])
    results.head()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    output
    在这里插入图片描述
    紧接着我们针对某个单独的国家,统计历史过往中所有比赛的胜负率情况,例如小编比较喜欢阿根廷队,就筛选出阿根廷队的历史战绩,代码如下

    df = results[(results["home_team"] == "Argentina") | (results["away_team"] == "Argentina")]
    argen = df.iloc[:]
    argen.head()
    
    • 1
    • 2
    • 3

    output
    在这里插入图片描述
    么同时我们也知道第一届世界杯举办的时间是1930年在乌拉圭举办的,那么筛选出在1930年之后的所有比赛的成绩,代码如下

    year = []
    
    • 1
  • 相关阅读:
    限时开源,一份“扭转乾坤”的与时俱进的1700页Java八股文
    速览默默发展的Web3邮箱赛道
    亚马逊API接口解析,实现按关键字搜索商品
    【云原生Docker系列第二篇】Docker容器管理(我在人间贩卖黄昏,只为带着星光照耀你)
    elementUI 特定分辨率(如1920*1080)下el-row未超出一行却换行
    如何加速JavaScript 代码运行速度
    融合莱维飞行与黄金正弦的蚁狮优化算法-附代码
    【论文解读】斯坦福小镇Generative Agents
    重新审视对比特币的九大批评!有些已被揭穿,而有些担忧可能会发生?
    vue中什么是$nextTick?
  • 原文地址:https://blog.csdn.net/Gtieguo/article/details/128145371