2025美赛数学建模c题思路+模型+代码分享!非机构不卖课(12:51已更新完善Q1模型的代码)

2025 MCM C 题思路分析

在这里插入图片描述
中文版题目翻译在这里先不放了,重点说一下我和队友讨论出来的一个简单思路。

题目背景信息

  • 排名、金牌、奖牌数量: 奥运会奖牌榜的核心指标。
  • 奖牌预测方法: 强调基于参赛运动员名单而非历史奖牌数据进行预测。
  • 数据限制: 模型和分析必须仅使用提供的五个数据文件,所以好好想想到时候伟大教练应该怎么考虑 (data_dictionary.csv, summerOly_athletes.csv, summerOly_medal_counts.csv, summerOly_hosts.csv, summerOly_programs.csv)。

名词解释

  • discipline (赛类): 如游泳、田径等大的运动类别。
  • event (赛项): 具体比赛项目,如男子100米自由泳,是产生奖牌的具体赛事。

问题分解与建模思路

Q1 (Model 1): 奖牌预测模型

目标: 为每个国家建立奖牌预测模型,至少预测金牌和总奖牌数,并给出预测的置信区间,评估模型性能。

输入: (至少)一个字典,key 为运动员名称,value 为运动员的过往竞赛数据。

输出: 一个字典,key 为运动员名称,value 为预测的该运动员获得的奖牌数量(可以是单个数值或一个概率分布)。

核心: 研究运动员和奖牌之间的关系。

关键词: athletes, medal counts, gold medal, quantification, mathematical modeling.

参考论文:

  • 论文1: Olympic Game Medal Count Analysis (calstate.edu) - 分析了奖牌与温度、GDP 的关系,但未分析运动员与奖牌的关系,可参考其分析方法。
  • 论文2: Forecasting the Olympic medal distribution – A socioeconomic machine learning model - ScienceDirect - 未分析运动员与奖牌关系,但对结果的预测有参考价值,模型需谨慎借鉴,不要使用额外数据,额外数据根据题目要求只能作为佐证。

模型建议:

  • 尽量使用随机森林及其衍生模型。
  • 创新点: 可探索随机森林的衍生模型,但避免过于复杂,保证实现可行性。
  • 模型性能评估: 使用适当的评估指标(如 MSE, RMSE, R^2),进行交叉验证。
Q1.1: 2028 年洛杉矶奥运会预测

在这里插入图片描述

目标: 基于 Q1 模型,预测 2028 年洛杉矶奥运会的奖牌榜,包括预测区间,并分析哪些国家可能进步或退步。

输出:

  • 预测的 2028 年奥运会奖牌榜 (包括区间)
  • 哪些国家可能进步/退步的分析

核心: 应用已建立的奖牌预测模型进行预测。

Q1.2: 未获奖牌国家首次获奖时间预测

目标: 模型需包括未获奖牌国家,预测多少国家在下届奥运会首次获奖,并给出概率。

输入: 一个字典,每个 key 为运动员,每个 value 为运动员的过往竞赛记录。

输出:

  • 一个字典,key 为运动员,value 为运动员获得奖牌的数量(或概率分布)。
  • 未获奖牌国家首次获奖预测的概率。

理解: 将模型准确率视为预测的可能性。

核心: 分析运动员参赛经历、奖牌记录与首次获奖之间的关系。

Q1.3: 赛事类型与奖牌关系

目标: 探索赛事类型(如游泳、举重)和国家奖牌数之间的关系,分析哪些体育项目对不同国家重要,以及主办国选择如何影响结果。

输入: 对于每个国家,赛事类型 (x)。

输出: 对于每个国家,奖牌数量 (y)。

方法:

  • 尝试多种机器学习模型(如回归、树模型),对比结果,选择最优模型。
  • 模型建立过程可仅针对最优模型详细描述。

核心: 揭示赛事类型对国家奖牌数的潜在影响。

当然可以,我们先从 Q1 的模型开始,一步一步来完成代码。请确保你已经安装了 pandasscikit-learn 库。

代码在这里!!!!!!!!Q1:建立奖牌预测模型

Q1 完整解答:模型开发、不确定性评估和性能衡量

目标: 开发一个更完善的奖牌预测模型,并包含不确定性估计和性能评估。

改进方向:

  1. 更丰富的特征工程: 加入历史奖牌表现作为特征,例如过去几届奥运会的平均金牌数、总奖牌数。
  2. 不确定性估计: 使用 Bootstrap 方法来估计预测结果的不确定性,并给出预测区间。
  3. 性能衡量: 继续使用 MSE 和 R^2,并考虑添加其他指标,例如平均绝对误差 (MAE)。

代码实现:

步骤 1: 扩展特征工程 - 加入历史奖牌特征

我们在特征中加入过去几届奥运会的金牌和总奖牌数均值,以捕捉国家历史奖牌表现的趋势。

import pandas as pd
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error, r2_score
import numpy as np

# 加载数据 (保持之前的数据加载和清洗代码不变)
athletes_df = pd.read_csv('summerOly_athletes.csv', encoding='utf-8')
medal_counts_df = pd.read_csv('summerOly_medal_counts.csv', encoding='utf-8')
medal_counts_df = medal_counts_df[~medal_counts_df['NOC'].isin(['Mixed team', 'ANZ'])]
medal_counts_df['Year'] = medal_counts_df['Year'].astype(int)
athletes_df['Year'] = athletes_df['Year'].astype(int)


# 特征工程 -  加入历史奖牌特征
def create_historical_features(df, years_ago_list=[4, 8, 12]): #  考虑过去 4, 8, 12 年的奥运会
    df_features 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值