【已更新】2024美赛C题代码教学思路数据处理数学建模分析Momentum in Tennis

问题一完整的代码已给出,预计2号晚上或者3号凌晨全部给出。

代码逻辑如下:
C题第一问要求我们开发一个模型,捕捉得分时的比赛流程,并将其应用于一场或多场比赛。你的模型应该确定哪名球员在比赛的特定时间表现得更好,以及他们的表现有多好。那么换句话说,就是评价球员在比赛期间的一个实时的状态,
因此对于这个问题求解的关键在于如何从给出的数据中提取特征,而不是侧重于套用模型进行评价
在于我们需要根据提供的数据,分析出选手在场上的心态,体能的实时状态,随后根据提取出的选手特征对选手的表现进行评价,最后的结果会抽象成为一个数值用于表现选手在某一时刻下的表现得分,根据得分的差别反应选手的表现好坏程度

部分代码可视化图如下:

【腾讯文档】2024美赛C题详情docs.qq.com/doc/DVVp3WFVmTERTTlhC

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

核心代码如下:

数据预处理部分:

数据预处理

Convert elapsed_time to timedelta

match_data[‘elapsed_time_td’] = pd.to_timedelta(match_data[‘elapsed_time’])

Calculate the time difference in seconds within each match_id group

match_data[‘time_diff’] = match_data.groupby(‘match_id’)[‘elapsed_time_td’].diff().dt.total_seconds()

Fill NaN values with the first elapsed_time value in each group, converted to seconds

match_data[‘time_diff’] = match_data.groupby(‘match_id’)[‘time_diff’].fillna(
match_data[‘elapsed_time_td’].dt.total_seconds()
)

Show the updated dataframe to verify changes

match_data[[‘match_id’, ‘elapsed_time’, ‘time_diff’]].head()

Group by [‘match_id’, ‘set_no’, ‘game_no’] and collect the corresponding ‘p1_points_won’, ‘p2_points_won’ into lists

grouped_data = match_data.groupby([‘match_id’, ‘set_no’, ‘game_no’])[[‘p1_points_won’, ‘p2_points_won’]].apply(lambda x: x.values.tolist()).reset_index(name=‘points_won_list’)

Convert the grouped data to a list of lists as requested

points_won_lists = grouped_data[‘points_won_list’].tolist()

Convert the ‘p1_points_won’, ‘p2_points_won’ values into their differences

points_diff_lists = [[p1 - p2 for p1, p2 in match] for match in points_won_lists]

Display the first few elements to verify the transformation

points_diff_lists[:5]

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

def Calculate_Performance(df):
df[‘p1’] = df[‘time_diff’]/100 + df[‘p1_sets’]*0.5 + df[‘p1_games’]*0.1 + df[‘p1_ace’] + df[‘p1_winner’]*0.5 - df[‘p1_unf_err’]*0.5
df[‘p2’] = df[‘time_diff’]/100 + df[‘p2_sets’]*0.5 + df[‘p2_games’]*0.1 + df[‘p2_ace’] + df[‘p2_winner’]*0.5 - df[‘p2_unf_err’]*0.5

for index in range(len(df)):if index == 0:if df.at[index, 'point_victor'] == 1:df.at[index, 'p1'] += 0.5else:df.at[index, 'p2'] += 0.5continueif df.at[index, 'point_victor'] == 1:if df.at[index-1, 'point_victor'] == 1:df.at[index, 'p1'] += 0.5 * 1.2else:df.at[index, 'p1'] += 0.5else:if df.at[index-1, 'point_victor'] == 1:df.at[index, 'p2'] += 0.5else:df.at[index, 'p2'] += 0.5 * 1.2return df['p1'], df['p2']

调用函数并获取结果

p1_scores, p2_scores = Calculate_Performance(match_data[match_data[‘match_id’]==‘2023-wimbledon-1301’])
p1_scores, p2_scores

在这里插入图片描述

问题分析
问题围绕2023年温网男单决赛中,20岁的西班牙新星卡洛斯·阿尔卡拉兹击败36岁的诺瓦克·德约科维奇的比赛。德约科维奇自2013年以来首次在温布尔登输球,结束了他在大满贯赛事中的杰出表现。这场比赛被认为是一场精彩的较量,经历了多次势头的转换,这些势头转换通常被归因于“动量”。在体育运动中,团队或球员可能会在比赛/比赛中感觉到自己有动量,或“力量/力量”,但很难衡量这种现象。此外,还不清楚比赛中的各种事件是如何产生或改变势头的。

提供了2023年温布尔登网球公开赛前两轮之后所有男子比赛的每一分数据。您可以自行选择包含其他玩家信息或其他数据,但必须完整记录来源。

也就是说,我们需要通过对已有的数据进行处理,找到其中包含动量特征的因素,构建一个模型去衡量这些因素是否使得我们选手的表示更加生猛,下面是我们的一个具体思路。

数据预处理
确保每个比赛的数据完整性,包括比赛时间、比分、发球情况等。
转换时间格式,统一比分表示方法。
将数据转换成可处理的数值数据,如在玩家的得分中,包含了AD这一项,这不利于我们后续的数据处理,可以将其转换成50

特征提取
目标是找到可以为运动员积累获胜“动量”的特征,可以从以下角度考虑是否存在连胜的“动量”。
比分变化:记录每一分后的总比分变化。
发球优势:统计每位运动员的发球局中赢得的分数比例。
破发点:记录每位运动员赢得和失去的破发点数量。
连续得分:运动员连续得分的次数,反映比赛势头。
回球成功率:根据返回深度和速度评估回球成功率。
运动员移动距离:反映体能和比赛中的活跃度。

模型设计
使用逻辑回归或随机森林等机器学习方法来评估每位运动员的表现。模型的输入是上述特征,输出是每位运动员的表现评分。

模型应用
选择具体的比赛数据应用模型,比较不同运动员的表现评分。

结果分析
根据模型的评分结果,分析哪位运动员在比赛中表现更好及其显示出的优势。

接下来,我们将开始实现这些步骤。首先进行数据预处理和特征提取。我们将从提供的比赛数据中提取关键特征。左图展示了比赛中每个得分点后选手之间比分差异的变化。这可以帮助我们理解比赛的势头和选手间的竞争状态。右图展示了比赛过程中两位选手总移动距离的变化,反映了选手的体能消耗和场上活跃度。
在这里插入图片描述

下图通过计算选手1在其发球局中赢得的分数比例,我们绘制了一个折线图来展示选手在不同round下的总共的移动距离以及得分比例。

在这里插入图片描述

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

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

相关文章

AI-数学-高中-24-三角函数一般形式的各参数含义

原作者视频:三角函数】12三角函数一般形式的各参数含义(易)_哔哩哔哩_bilibili 1.函数中的A标识符:表示曲线中间平衡位置的振幅,值域为正负A:[-A,A]。 2.函数中的B标识符:决定曲线纵向上下平移…

基于 SpringBoot 和 Vue.js 的权限管理系统部署教程

大家后,我是 jonssonyan 在上一篇文章我介绍了我的新项目——基于 SpringBoot 和 Vue.js 的权限管理系统,本文主要介绍该系统的部署 部署教程 这里使用 Docker 进行部署,Docker 基于容器技术,它可以占用更少的资源,…

linux文件的IO函数

open函数: 作用:打开或者新建一个文件 原型: int open(const char*pathname,int flags); int open(const char*pathname,int flags,mode_t mode); 参数: pathname:路径 flags:1-> O_RONLY 只读打开 2 -> O_WONLY只写打开 3->…

83 CTF夺旗-Python考点SSTI反序列化字符串

这里写目录标题 CTF各大题型简介演示案例:CTF夺旗-Python-支付逻辑&JWT&反序列化CTF夺旗-Python-Flask&jinja2&SSTl模版注入CTF夺旗-Python-格式化字符串漏洞&读取对象 涉及资源: 我们这篇文章主要讲的是CTF在web渗透测试方向的3个考点 CTF各大…

elementui常用组件-个人版(间断更新)

Dialog 对话框 el-dialog <el-dialogtitle"提示":visible.sync"dialogVisible"width"30%":before-close"handleClose"><span>这是一段信息</span><span slot"footer" class"dialog-footer"…

微信小程序(三十六)事件传参

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.传参步骤 2.传参接收解构步骤 源码&#xff1a; index.wxml <button type"primary" bind:tap"onclick" mark:index"{{0}}" mark:remb"{{1}}" class"But&quo…

产品经理--分享在项目中产品与研发之间会遇到的问题 在面试这一岗位时,面试官常问的问题之一,且分享两大原则来回答面试官这一问题

目录 一.STAR原则 1.1 简介 1.2 如何使用 1.3 举例说明 二.PDCA原则 2.1 简介 2.2 如何使用 2.3 运用场景 2.4 举例说明 三.产品与研发的沟通痛点 3.1 沟通痛点的原因 3.2 分享案例 前言 本篇会详细阐明作为一个产品经理会在项目遇到的问题&#xff0c;如&#xff1a;产…

张艺谋《主角》选角引发热议,周迅、赵丽颖、杨紫或成候选。

♥ 为方便您进行讨论和分享&#xff0c;同时也为能带给您不一样的参与感。请您在阅读本文之前&#xff0c;点击一下“关注”&#xff0c;非常感谢您的支持&#xff01; 文 |猴哥聊娱乐 编 辑|徐 婷 校 对|侯欢庭 近日&#xff0c;张艺谋执导的首部电视剧《主角》女主选角成为…

6.electron之上下文隔离,预加载JS脚本

如果可以实现记得点赞分享&#xff0c;谢谢老铁&#xff5e; Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 Electron 将 Chromium 和 Node.js 嵌入到了一个二进制文件中&#xff0c;因此它允许你仅需一个代码仓库&#xff0c;就可以撰写支持 Windows、…

【Linux】vim的基本操作与配置(上)

Hello everybody!今天我们要进入vim的讲解了。学会了vim,咱们就可以在Linux系统上做一些简单的编程啦&#xff01; 那么废话不多说&#xff0c;咱们直接进入正题&#xff01; 1.初识vim vim是一款多模式的文本编辑器&#xff0c;可以对一个文件进行编辑操作。 它一共有三个模…

2024年【化工自动化控制仪表】最新解析及化工自动化控制仪表考试资料

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年【化工自动化控制仪表】最新解析及化工自动化控制仪表考试资料&#xff0c;包含化工自动化控制仪表最新解析答案和解析及化工自动化控制仪表考试资料练习。安全生产模拟考试一点通结合国家化工自动化控制仪表考…

《dx12 龙书》第四部分学习笔记——预备知识(下)

7、多重采样技术的原理 由于屏幕中显示的像素不可能是无穷小的&#xff0c;所以并不是任意一条直线都能在显示器上“平滑”而完美地呈现出来。即为以像素矩阵 &#xff08;matrix of pixels&#xff0c; 可以理解为“像素2D数组”&#xff09;逼近直线的方法所产生的“阶梯” &…

EDM营销平台哪个好?推荐的邮件营销平台?

EDM邮件营销平台有哪些&#xff1f;外贸EDM邮件营销平台有哪些&#xff1f; EDM营销平台已成为企业推广产品和服务的重要工具。但是&#xff0c;面对市场上众多的EDM营销平台&#xff0c;究竟哪个更好呢&#xff1f;下面&#xff0c;蜂邮EDM将从平台功能、用户体验、数据分析和…

Matlab使用点云工具箱进行点云配准

一、代码 source_pc pcread(bun_zipper.ply); target_pc pcread(bun_zipper2.ply); % 下采样 gridStep 0.001; ptCloudA pcdownsample(source_pc,gridAverage,gridStep); ptCloudB pcdownsample(target_pc,gridAverage,gridStep); % 初始变换矩阵 tform_initial affine3…

C语言笔试题之实现C库函数 pow()(递归的思想)

实例要求&#xff1a; 1、请你实现C库函数 pow()&#xff08;stdio.h & math.h&#xff09; &#xff0c;即计算 x 的整数 n 次幂函数&#xff08;即x^n &#xff09;&#xff1b;2、函数声明&#xff1a;double myPow(double x, int n)&#xff1b;参数&#xff1a;1、x …

YOLOv8改进 更换轻量级网络结构

一、GhostNet论文 论文地址:1911.11907.pdf (arxiv.org) 二、 GhostNet结构 GhostNet是一种高效的目标检测网络,具有较低的计算复杂度和较高的准确性。该网络采用了轻量级的架构,可以在计算资源有限的设备上运行,并能够快速地实时检测图像中的目标物体。 GhostNet基于Mo…

AI大模型开发架构设计(9)——AI 编程架构刨析和业务应用实战案例

文章目录 AI 编程架构刨析和业务应用实战案例1 AI编程代码生成模型剖析编程方式的发展代码自动生成基于大模型的AI编程工具——Github Copilot以 CodeGeeX 为例-发展过程以 CodeGeeX 为例-训练过程以 CodeGeeX 为例-大规模代码数据处理以 CodeGeeX 为例-模型结构以 CodeGeeX 为…

[设计模式Java实现附plantuml源码~行为型]请求的链式处理——职责链模式

前言&#xff1a; 为什么之前写过Golang 版的设计模式&#xff0c;还在重新写Java 版&#xff1f; 答&#xff1a;因为对于我而言&#xff0c;当然也希望对正在学习的大伙有帮助。Java作为一门纯面向对象的语言&#xff0c;更适合用于学习设计模式。 为什么类图要附上uml 因为很…

JWT令牌 | 一个区别于cookie/session的更安全的校验技术

目录 1、简介 2、组成成分 3、应用场景 4、生成和校验 5、登录下发令牌 &#x1f343;作者介绍&#xff1a;双非本科大三网络工程专业在读&#xff0c;阿里云专家博主&#xff0c;专注于Java领域学习&#xff0c;擅长web应用开发、数据结构和算法&#xff0c;初步涉猎Pyth…

洛谷C++简单题小练习day9—[AHOI2017]寻找探监点

day9--[AHOI2017]寻找探监点--2.7 习题概述 题目描述 一个nn 的网格图&#xff08;标号由 1,1 开始&#xff09;上有 m 个探测器&#xff0c;每个探测器有个探测半径 r &#xff0c;问这 nn 个点中有多少个点能被探测到。 输入格式 第一行 3 个整数 n,m,r。 接下来 m 行&…