采用 Python 机器学习预测足球比赛结果

足球是世界上最火爆的运动之一,如何运用机器学习来预测足球比赛结果,是每一个足球爱好者所向往的!

本场 Chat 适合有 Python 基础的机器学习初学者,我们带你一起熟悉机器学习的开发流程,帮你快速建立起自己的英超比赛预测模型!

你将获取到如下内容:

  1. 人工智能在线建模平台介绍;
  2. 熟悉机器学习开发流程;
  3. 熟悉 Python 数据挖掘库 NumPy、Pandas、Scikit-Learn 等开发库的基本使用;
  4. 熟悉常见分类算法(逻辑回归、SVM 和 XGBoost)及其评价指标;
  5. 部署完成一个属于自己的预测模型。

足球是世界上最火爆的运动之一,世界杯期间也往往是球迷们最亢奋的时刻。比赛狂欢季除了炸出了熬夜看球的铁杆粉丝,也让足球竞猜也成了大家茶余饭后最热衷的话题。甚至连原来不怎么看足球的人,也是暗中努力恶补了很多足球相关知识,想通过赛事竞猜先赚一个小目标。今天我们将介绍如何用机器学习来预测足球比赛结果!

本 Chat 采用 Python 编程语言,使用 人工智能建模平台 Mo 作为在线开发环境进行编程,通过获取 2000 年到 2018 年共 19 年英超的比赛数据,然后基于监督学习中逻辑回归模型、支持向量机模型和 XGBoost 模型,对英超比赛结果进行预测。

下面我们一起来看看预测英超比赛结果的机器学习步骤:

主要流程步骤

  1. 获取数据和读取数据的信息
  2. 数据清洗和预处理
  3. 特征工程
  4. 建立机器学习模型并进行预测
  5. 总结与展望

1. 获取数据和读取数据的信息

首先我们进入 Mo 工作台,创建一个空白项目,点击 开始开发 ,进入内嵌 JupyterLab 的 Notebook 开发环境。

enter image description here

enter image description here

接着我们需要在项目中上传数据集。

英超每年举办一个赛季,在每年的 8 月到第二年的 5 月进行,共有 20 支球队,实行主客场双循环赛制,每个赛季共 38 轮比赛(其中 19 场主场比赛,19 场客场比赛),每轮比赛共计 10 场比赛,所以每个赛季,英超共有 380 场比赛。

  • 数据集地址

  • 数据集中特征说明文档

如果您已经在 MO 平台新建项目,可以在平台直接导入数据集,流程如下:

enter image description here

1.1 读取 csv 数据接口解释

  • 采用 Pandas 读取、写入数据 API 汇总网址读取 csv 数据一般采用 pandas.readcsv():pandas.readcsv(filepathorbuffer, sep =',' , delimiter = None)
  • filepathorbuffer:文件路径
  • sep:指定分隔符,默认是逗号
  • delimiter:定界符,备选分隔符(如果指定改参数,则sep失效)
  • usecols: 指定读取的列名,列表形式
# 导入必须的包import warningswarnings.filterwarnings('ignore')  # 防止警告文件的包import pandas as pd  # 数据分析包import osimport matplotlib.pyplot as plt # 可视化包import matplotlib%matplotlib inlineimport seaborn as sns  # 可视化包from time import timefrom sklearn.preprocessing import scale  # 标准化操作from sklearn.model_selection import train_test_split  # 将数据集分成测试集和训练集from sklearn.metrics import f1_score  # F1得分import xgboost as xgb  # XGBoost模型from sklearn.svm import SVC  ## 支持向量机分类模型from sklearn.linear_model import LogisticRegression  # 逻辑回归模型from sklearn.model_selection import GridSearchCV  # 超参数调参模块from sklearn.metrics import make_scorer  # 模型评估import joblib  # 模型的保存与加载模块

下面开始我们的表演:

# 获取地址中的所有文件loc = './/football//' # 存放数据的路径res_name = []  # 存放数据名的列表filecsv_list = []  # 获取数据名后存放的列表def file_name(file_name):    # root:当前目录路径   dirs:当前目录下所有子目录   files:当前路径下所有非目录文件    for root,dirs,files in os.walk(file_name):        files.sort() # 排序,让列表里面的元素有顺序        for i,file in enumerate(files):            if os.path.splitext(file)[1] == '.csv':                filecsv_list.append(file)                res_name.append('raw_data_'+str(i+1))    print(res_name)    print(filecsv_list)file_name(loc)
['raw_data_1', 'raw_data_2', 'raw_data_3', 'raw_data_4', 'raw_data_5', 'raw_data_6', 'raw_data_7', 'raw_data_8', 'raw_data_9', 'raw_data_10', 'raw_data_11', 'raw_data_12', 'raw_data_13', 'raw_data_14', 'raw_data_15', 'raw_data_16', 'raw_data_17', 'raw_data_18', 'raw_data_19']['2000-01.csv', '2001-02.csv', '2002-03.csv', '2003-04.csv', '2004-05.csv', '2005-06.csv', '2006-07.csv', '2007-08.csv', '2008-09.csv', '2009-10.csv', '2010-11.csv', '2011-12.csv', '2012-13.csv', '2013-14.csv', '2014-15.csv', '2015-16.csv', '2016-17.csv', '2017-18.csv', '2018-19.csv']

1.2 时间列表

获取每一年的数据后,将每一年的年份放入到 time_list 列表中:

time_list = [filecsv_list[i][0:4]  for i in range(len(filecsv_list))]time_list

['2000','2001','2002','2003','2004','2005','2006','2007','2008','2009','2010','2011','2012','2013','2014','2015','2016','2017','2018']

1.3 用 Pandas.read_csv() 接口读取数据

读取时将数据与 res_name 中的元素名一一对应。

for i in range(len(res_name)):    res_name[i] = pd.read_csv(loc+filecsv_list[i],error_bad_lines=False)    print('第%2s个文件是%s,数据大小为%s'%(i+1,filecsv_list[i],res_name[i].shape))
第 1个文件是2000-01.csv,数据大小为(380, 45)第 2个文件是2001-02.csv,数据大小为(380, 48)第 3个文件是2002-03.csv,数据大小为(316, 48)第 4个文件是2003-04.csv,数据大小为(335, 57)第 5个文件是2004-05.csv,数据大小为(335, 57)第 6个文件是2005-06.csv,数据大小为(380, 68)第 7个文件是2006-07.csv,数据大小为(380, 68)第 8个文件是2007-08.csv,数据大小为(380, 71)第 9个文件是2008-09.csv,数据大小为(380, 71)第10个文件是2009-10.csv,数据大小为(380, 71)第11个文件是2010-11.csv,数据大小为(380, 71)第12个文件是2011-12.csv,数据大小为(380, 71)第13个文件是2012-13.csv,数据大小为(380, 74)第14个文件是2013-14.csv,数据大小为(380, 68)第15个文件是2014-15.csv,数据大小为(381, 68)第16个文件是2015-16.csv,数据大小为(380, 65)第17个文件是2016-17.csv,数据大小为(380, 65)第18个文件是2017-18.csv,数据大小为(380, 65)第19个文件是2018-19.csv,数据大小为(304, 62)

1.4 删除特定文件的空值

经过查看第 15 个文件读取的第 381 行为空值,故采取删除行空值操作。

1.4.1 删除空值的接口
  • Pandas.dropna(axis=0,how='any')
  • axis: 0 表示是行;1表示是列
  • how:'all'表示只去掉所有值均缺失的行、列;any表示只去掉有缺失值的行、列
1.4.2 接口运用
res_name[14] = res_name[14].dropna(axis=0,how='all')res_name[14].tail()
DivDateHomeTeamAwayTeamFTHGFTAGFTRHTHGHTAGHTR...BbAv<2.5BbAHBbAHhBbMxAHHBbAvAHHBbMxAHABbAvAHAPSCHPSCDPSCA
375E024/05/15HullMan United0.00.0D0.00.0D...1.9925.00.501.761.712.272.193.203.762.27
376E024/05/15LeicesterQPR5.01.0H2.00.0H...2.4128.0-1.001.981.931.981.931.534.946.13
377E024/05/15Man CitySouthampton2.00.0H1.00.0H...2.6628.0-1.002.001.942.031.931.604.356.00
378E024/05/15NewcastleWest Ham2.00.0H0.00.0D...2.2525.0-0.501.821.782.202.101.764.014.98
379E024/05/15StokeLiverpool6.01.0H5.00.0H...1.9925.00.252.072.021.881.853.563.602.17

5 rows × 68 columns

1.5 删除行数不是 380 的文件名

考虑到英超一般是 19 个球队,每个球队需要打 20 场球,故把行数不是 380 的数据删除掉,并找到器原 CSV 文件一一对应。

for i in range(len(res_name),0,-1):     # 采用从大到小的遍历方式,然后进行删除不满足条件的。    if res_name[i-1].shape[0] != 380:        key = 'res_name[' + str(i) + ']'        print('删除的数据是:%s年的数据,文件名:%s大小是:%s'%(time_list[i-1],key,res_name[i-1].shape))        res_name.pop(i-1)        time_list.pop(i-1)        continue
删除的数据是:2018年的数据,文件名:res_name[19]大小是:(304, 62)删除的数据是:2004年的数据,文件名:res_name[5]大小是:(335, 57)删除的数据是:2003年的数据,文件名:res_name[4]大小是:(335, 57)删除的数据是:2002年的数据,文件名:res_name[3]大小是:(316, 48)

1.6 查看某一个数据集前n行数据

  • 文件名.head(n)n:默认是5,想获取多少行数据就填写数字值。

读取数据前五行操作:

res_name[0].head()
DivDateHomeTeamAwayTeamFTHGFTAGFTRHTHGHTAGHTR...IWALBHLBDLBASBHSBDSBAWHHWHDWHA
0E019/08/00CharltonMan City40H20H...2.72.203.252.752.203.252.882.103.23.10
1E019/08/00ChelseaWest Ham42H10H...4.21.503.406.001.503.606.001.443.66.50
2E019/08/00CoventryMiddlesbrough13A11D...2.72.253.202.752.303.202.752.303.22.62
3E019/08/00DerbySouthampton22D12A...3.52.203.252.752.053.203.202.003.23.20
4E019/08/00LeedsEverton20H20H...4.51.553.505.001.573.605.001.613.54.50

5 rows × 45 columns

读取数据前10行:

res_name[0].head(10)
DivDateHomeTeamAwayTeamFTHGFTAGFTRHTHGHTAGHTR...IWALBHLBDLBASBHSBDSBAWHHWHDWHA
0E019/08/00CharltonMan City40H20H...2.72.203.252.752.203.252.882.103.203.10
1E019/08/00ChelseaWest Ham42H10H...4.21.503.406.001.503.606.001.443.606.50
2E019/08/00CoventryMiddlesbrough13A11D...2.72.253.202.752.303.202.752.303.202.62
3E0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/58665.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

按键精灵移动端系列 - 按键精灵IOS版 之 网络已断开,请检查网络连接.解决方案.

由于很多网友对这种问题,不知道如何处理.因本人也曾遇到过这种情况.经过不懈努力终于解决了这个神奇的BUG.长话短说上操作流程.如果觉得给力,请三连 点赞. 收藏. 转发. 谢谢您的支持. ** 1 安装雷锋源: apt.abcydia.com 2安装好雷锋源, 搜索: conditionalwifi 更新到最新版 …

按键精灵助手无法连接模拟器解决方案【适用任何模拟器】

找到按键精灵安装地址 D:\ProgramData\按键精灵\按键精灵手机助手\android 找到木木安装地址&#xff0c;并搜索adb.exe,未找到 但是在D:\Program Files (x86)\MuMu\emulator\nemu\vmonitor\bin找到 adb_server.exe 以及另外两个.dll 复制着三个文件到按键精灵上述文件夹&#…

国行版苹果 ios 按键精灵无法联网问题处理

国行版苹果手机安装按键精灵后无法联网的问题&#xff1a; 操作步骤&#xff1a; &#xff08;1&#xff09;自行把苹果手机进行越狱&#xff0c;找到并打开越狱商店“Cydia” &#xff0c;其他商店同理&#xff0c;按照如下图步骤添加 “雷锋源”&#xff0c;源地址&#xff…

网易mumu显示无法连接服务器,网易MuMu无法连接网络_网易MuMu如何实现多开

网易MuMu是由网易全方面打造的一种非常具有精品特色的游戏服务平台&#xff0c;这款游戏服务平台在下载安装之后可以直接运行电脑上的各种不同游戏和应用程序&#xff0c;同时它的兼容性是比较强的&#xff0c;有着非常流畅的操作过程&#xff0c;还可以通过智能辅助等优秀特色…

网易mumu模拟器adb连接配置

一、 网易mumu模拟器下载 二、安装模拟器到本机指定目录 1、例如&#xff1a;D:\Program Files\MuMu 2、adb文配置相关文件位于&#xff1a;D:\Program Files\MuMu\emulator\nemu\vms\myandrovm_vbox86下&#xff0c;如下图所示&#xff1a; 3、打开myandrovm_vbox86.nemu文件…

uni-app 连接不上夜神模拟器

uni-app 连接不上夜神模拟器 第一步打开运行设置 设置端口号 第二步通过cmd命令去连接模拟器 我这利用的是HX 找到&#xff1a;HBuilderX.3.1.17.20210608.full\HBuilderX\plugins\launcher\tools\adbs 直接cmd 执行下面两个命令 adb connect 127.0.0.1:62001 adb devices…

夜神模拟器无法连接网络的解决办法

我们经常会在电脑上安装安卓模拟器来玩一些手机游戏或者运行手机软件&#xff0c;但是有时候可能由于网络不好等原因导致模拟器连接不上网络。比如夜神模拟器无法连接网络怎么办&#xff1f;下面就来看看解决的办法。 夜神模拟器无法连接网络怎么办&#xff1a; 1、同时按下“w…

按键精灵手机助手如何连接安卓版按键精灵如何连接手机助手

通过上述讲解过的按键精灵如何下载文章得知,按键精灵手机版分为两个版本,分别为安卓版和IOS版,都是需要连接在按键精灵手机助手运行,按键精灵手机助手则必须在电脑上安装运行。好的,下面我们就来逐步讲解一下,手机版按键精灵如何使用。 首先,我们打开已经安装完成的按键…

天天模拟器显示获取服务器失败,天天模拟器无法联网怎么办-天天模拟器不能上网的解决方法 - 河东软件园...

天天模拟器是目前最热门的安卓模拟器软件&#xff0c;这是国内自主研发的一款优秀模拟器&#xff0c;其采用了持OpenGL硬件加速技术&#xff0c;能够帮助用户稳定的运行各类安卓应用&#xff0c;&#xff0c;并且具备了应用多开&#xff0c;软件具备了操作简单、稳定流畅等诸多…

qq手机助手连接服务器失败是什么原因,按键精灵手机助手教程,按键精灵手机助手连不上手机解决方法...

下面是按键精灵手机助手教程&#xff0c;按键精灵手机助手连不上手机解决方法 一、打开已安装的软件并单击[新建脚本]以创建新的游戏脚本 二、单击[我的脚本]查看创建或下载的脚本 三、点击[移动连接]将您的移动电话与数据线连接&#xff0c;方便测试脚本 我们得到了根用户的许…

总是助手服务器失败怎么回事,《遇见逆水寒》连接服务器失败解决方法汇总 服务器连接失败问题原因...

导 读 遇见逆水寒连接服务器失败怎么回事&#xff0c;近期不少小伙伴都在反映遇见逆水寒助手连接服务器失败&#xff0c;一直登不上去是怎么回事&#xff0c;小编这就为大家分享下遇见逆水寒连接服务器失败解决方法。 遇见逆水寒连接服务器失败解决方法... 遇见逆水寒连接服务器…

遇见逆水寒最新服务器是哪个,遇见逆水寒连接服务器失败怎么回事_遇见逆水寒连接服务器失败解决办法_玩游戏网...

《遇见逆水寒》是《逆水寒》同版本的手游系列&#xff0c;也是拥有了很多的玩家&#xff0c;最近玩家在登录《遇见逆水寒》服务器的时候遇到了连接失败的情况&#xff0c;这是怎么回事呢&#xff1f;要如何解决呢&#xff1f;下面就和玩游网小编一起来了解一下&#xff01; 《遇…

解决夜神模拟器连接不上问题

一般端口占用的问题比较多&#xff0c;常见的如酷狗音乐、杀毒软件&#xff0c;不建议同时使用&#xff1b;也可以采取如下方法解决。 一、5037端口号占用 1.输入下面的命令查询哪个占用了5037端口 netstat -ano | findstr "5037" 出现下面信息 TCP 127.0.0.…

天书奇谈怎么显示连接服务器,天书奇谈手游好玩吗 天书奇谈无法连接服务器怎么办...

天书奇谈手游好玩吗 天书奇谈无法连接服务器怎么办&#xff0c;小编为大家整理的是一篇关于天书奇谈手游好玩吗 天书奇谈无法连接服务器怎么办的文章&#xff0c;如果你对天书奇谈这款游戏也非常感兴趣的话或者在游戏中也遇到了这种情况&#xff0c;那么不妨来看看小编为大家整…

按键精灵手机助手连接安卓模拟器

按键精灵手机助手是一款脚本编写软件&#xff0c;能够帮助用户在电脑端编写应用于手机端的脚本程序&#xff0c;用户可以使用它在电脑上编写任意功能的脚本&#xff0c;比起在手机端编辑更加方便&#xff0c;编辑后可以在电脑端进行测试&#xff0c;只需要连接上手机就可以实时…

【1】天猫精灵开放实验平台实验—创建语音技能

天猫精灵开放实验平台—创建语音技能 基于 阿里云云开发平台 开发学习 https://workbench.aliyun.com/ 文章目录 天猫精灵开放实验平台—创建语音技能一、创建语音技能1、输入[天猫精灵开放平台首页](https://aligenie.com/)进入实验平台。2、点击“控制台”&#xff0c;跳转至…

android studio按键精灵,51模拟器怎么连接按键精灵 51安卓模拟器按键精灵连接教程...

51模拟器怎么连接按键精灵&#xff1f;有很多小伙伴在使用51安卓模拟器的时候&#xff0c;想要使用按键精灵&#xff0c;今天通过这篇文章给大家讲讲按键精灵连接方法&#xff0c;一起来了解一下吧&#xff01; 51安卓模拟器使用教程》51模拟器怎么用 51安卓模拟器按键精灵连接…

MuMu模拟器网络连接异常如何处理?

网易MuMu模拟器是一款常见的安卓模拟器&#xff0c;但在使用过程中经常会出现网络异常的情况&#xff0c;这要如何处理&#xff1f;如果你也不清楚的话&#xff0c;不妨试试下面小编带来的解决办法。 解决方法&#xff1a; 1、查看系统目录&#xff0c;是否存在类似c:windowsyy…

git bash 命令行反应慢、卡顿

1. 在Windows11的电脑上安装了git 后&#xff0c;鼠标右键打开git bash here&#xff0c;打开窗口缓慢&#xff0c;输入命令也慢的要死&#xff0c;如果安装git的时候选择在桌面创建图标&#xff0c;通过桌面图标打开也是一样的 2. 最简单的ls 命令&#xff0c;都要停顿半秒 3.…

VsCode反应较慢(vscode卡顿,反应慢)

简述&#xff1a;这几天敲代码的时候发现vscode反应好慢&#xff0c;有时候更改个样式&#xff0c;也是同样&#xff0c;然后就开始找原因&#xff0c;之前开的代码自动保存&#xff0c; Git:Autorefresh、 Files:Auto Save、 Extensions:Auto Update、 都没有问题&#xf…