2023 “华为杯” 中国研究生数学建模竞赛(E题)深度剖析|数学建模完整代码+建模过程全解全析


在这里插入图片描述

问题一

血肿扩张风险相关因素探索建模

思路:

根据题目要求,首先需要判断每个患者是否发生了血肿扩张事件。根据定义,如果后续检查的血肿体积比首次检查增加≥6 mL或≥33%,则判断为发生了血肿扩张。
具体判断步骤:
(1) 从表1中提取每个患者的入院首次影像检查流水号;

(2) 根据流水号在附表1中查找对应首次检查的时间点;

(3) 计算发病到首次检查的时间间隔;

(4) 在表2中找到每个随访时间点的血肿体积;

(5) 依次计算相邻两次检查血肿体积变化量和变化百分比;

(6) 如果变化量≥6 mL 或变化百分比≥33%,则记为发生血肿扩张,记录下血肿扩张发生的时间点。

3.使用logistic回归建模,以是否发生血肿扩张作为目标变量,个人史、疾病史和首次影像特征作为自变量,建立预测模型。

目标变量: Y = 是否发生血肿扩张(1是,0否)

自变量: X1, X2, …, Xn(个人史、疾病史等)

建模公式: P(Y=1|X) = 1 / (1+e^-(b0+b1X1+…+bnXn))

4.使用训练集拟合logistic回归模型

(1) 将训练集的个人史、疾病史和首次影像特征整理为自变量X

(2) 将训练集的血肿扩张标记(1或0)作为目标变量Y

(3) 将自变量X和目标变量Y喂入logistic回归模型进行拟合

(4) 使用最大似然估计获得变量系数b0, b1, …, bn

(5) 得到拟合后的模型:

P(Y=1|X) = 1 / (1+e^-(b0+b1X1+…+bnXn))

5.用拟合好的模型对测试集进行预测

(1) 对测试集数据进行同样的特征工程,提取自变量X

(2) 将测试集的自变量X代入上面得到的模型中

(3) 计算每个样本的血肿扩张概率P(Y=1|X)

(4) 如果P(Y=1|X) ≥ 0.5,则预测该样本发生了血肿扩张

(5) 计算模型在测试集上的评估指标,如AUC等

(6) 根据变量系数的大小分析变量与血肿扩张的相关性

import pandas as pd
from sklearn.linear_model import LogisticRegression# 读取表1和表2中的数据
table1 = pd.read_excel('表1.xlsx') 
table2 = pd.read_excel('表2.xlsx')# 将表1和表2进行合并
data = pd.merge(table1, table2, on='ID')# 提取需要的特征
features = ['age', 'gender', 'history', ...] # 获得每个患者的首次影像时间和血肿体积
first_scan = data.groupby('ID')['time'].min()
first_volume = data[data['time'] == first_scan]['HM_volume']  

代码主要步骤包括:

读取和合并表格
特征工程
标记目标变量
划分训练集和测试集
模型训练和预测
输出结果
此处我们使用xgboost训练模型:

主要步骤为:

导入xgboost
设置xgboost的参数:
eta:学习率
max_depth:树的最大深度
objective:二分类的逻辑回归
eval_metric:评估指标设为AUC
将训练数据转换为DMatrix格式
使用xgboost训练模型
将测试数据也转为DMatrix格式
用训练好的模型进行预测
输出结果
XGBoost是一个流行且高效的树模型库,可以提取数据的复杂特征关系。

相比逻辑回归,XGBoost可处理各种类型的特征,也便于调参优化模型。

问题二

血肿周围水肿的发生及进展建模,并探索治疗干预和水肿进展的关联关系。

构建水肿体积随时间变化的模型
可以使用 Curve Fitting 的方法,以时间为自变量,水肿体积为目标变量,拟合出水肿体积随时间的曲线模型:

V E D = f ( t ) V_{ED} = f(t) VED=f(t)

其中, V E D V_{ED} VED表示水肿体积, t t t表示时间。

可以试用不同的曲线拟合方法,如线性回归、多项式回归、局部加权回归等。

计算患者真实值与拟合曲线的残差
对第i个样本:

r i = V E D i − f ( t i ) r_i = V_{ED_i} - f(t_i) ri=VEDif(ti)

其中, V E D i V_{ED_i} VEDi为第i个样本的真实水肿体积, f ( t i ) f(t_i) f(ti)为对应时间点上的拟合值。

划分患者亚组,拟合各亚组的水肿体积曲线
可以使用聚类算法如K-means对患者进行分群,然后对每一群体单独拟合曲线。

分析不同治疗对水肿演变的影响
可以将治疗方法作为类别特征,构建不同的曲线模型,然后比较模型效果。

也可以通过统计学方法(如t检验)比较不同治疗组水肿体积变化的差异。

分析三者之间的关系
可以采用相关性分析等统计学方法探索血肿体积、水肿体积和治疗之间的关系。

也可以构建包含三者作为特征的预测模型,通过分析系数等来发现三者之间的关联。
具体来说,相关性分析法
(1) 计算每个样本的血肿体积、水肿体积和各种治疗方式的 0/1 表示

(2) 使用 Pearson 相关系数计算血肿体积和水肿体积的线性相关性

(3) 使用 Spearman 秩相关系数计算血肿体积与各治疗方法的秩相关性

(4) 使用 Spearman 秩相关系数计算水肿体积与各治疗方法的秩相关性

(5) 比较不同系数的大小,分析三者之间的相关程度

建模法
(1) 将血肿体积、水肿体积作为连续特征,治疗方法作为分类特征

(2) 构建回归模型,以水肿体积为目标变量,血肿体积和治疗作为自变量

(3) 训练模型,得到各变量的系数

(4) 比较各治疗类别的系数,看其对水肿体积的影响效果

(5) 通过变量的显著性检验,选择关键的影响因素

(6) 分析模型总体表现,评估各变量的解释能力

import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.cluster import KMeans# 读取数据
data = pd.read_excel('table2.xlsx') # 特征工程:提取时间和水肿体积
X = data[['time']]  
y = data[['ED_volume']]# 构建线性回归模型
lr = LinearRegression()# 训练模型
lr.fit(X, y)# 获取拟合的系数
print('模型Slope:', lr.coef_)  
print('模型Intercept:', lr.intercept_)# 预测水肿体积
y_pred = lr.predict(X) 

​ 问题三

出血性脑卒中患者预后预测及关键因素探索
1.基于首次影像结果预测预后
使用回归模型,以90天mRS评分为目标变量,个人史、疾病史和首次影像特征为自变量:

m R S = w 0 + w 1 x 1 + . . . + w n x n mRS = w_0 + w_1x_1 + ... + w_nx_n mRS=w0+w1x1+...+wnxn

其中, m R S mRS mRS为预后评分, x i x_i xi为各特征, w i w_i wi为对应的权重系数。

可以试用线性回归、LASSO回归等算法。

2.基于全部影像结果预测预后
同上,不仅使用首次影像,还结合后续各时间点的影像特征,构建回归模型进行预测。

3.分析关键影响因素
通过分析各变量的权重 w i w_i wi,确定对 m R S mRS mRS影响最大的特征。
使用统计检验分析不同特征对 m R S mRS mRS的显著影响。
采用则特征选择的方法(如RFE),选择关键特征。
将无关特征删除后,观察模型评分的变化。
具体来说,
1)建模算法的选择
可以尝试线性回归、LASSO回归、GBDT等多种算法
比较不同算法的误差、过拟合情况,选择较优算法
调参优化模型,提升准确率
2)特征工程
处理缺失值:删除/填充
编码类别特征:One-hot 编码
标准化连续特征:去均值和方差归一化
提取时间序列特征:趋势、周期性等
采用 PCA 等方法降维
3)模型评估
划分训练集、验证集、测试集
多次交叉验证,观察方差
计算 RMSE、R2、MAE 等评价指标
绘制学习曲线,检查过拟合问题
4)关键因素分析
计算特征影响力,排序筛选
通过添加/删除特征,比较模型效果变化
使用统计学检验(t-test等)判断显著性
采用正则化方法自动特征筛选
分析特征在不同亚群中的效果

4.提出建议
对具有显著影响的特征,分析临床意义,给出干预建议。
对预后良好和预后不良的患者组,进行对比分析,找出影响因素的差异。
代码:

# 导入需要的库
import pandas as pd
from sklearn.linear_model import Lasso
from sklearn.model_selection import cross_val_score
import matplotlib.pyplot as plt# 读取数据
data = pd.read_csv('data.csv')# 特征工程
X = data[['age', 'gender', 'treatment', 'image_features']]
y = data['mRS']# 拆分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=2020)# Lasso回归
model = Lasso()# 使用网格搜索找到最优参数
from sklearn.model_selection import GridSearchCV
params = {'alpha': [0.001, 0.01, 0.1, 1]}
gs = GridSearchCV(model, params, scoring='neg_mean_squared_error', cv=5)
gs.fit(X_train, y_train)
print('最优参数:', gs.best_params_)
model = gs.best_estimator_#见完整版

完整版的思路看看我的回答哈~

(5 封私信 / 2 条消息) 如何评价2023数学建模研赛? - csdn

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

十大直线导轨品牌

在现如今的制造业领域中,直线导轨作为重要的传动元件,广泛应用于各种机械装置中,以下是十个在直线导轨领域具有优秀表现的品牌,我们一起来看看: 1、日本THK,致力于开发、生产并且销售LM滚动导轨、滚珠花键、…

设计模式篇---桥接模式

文章目录 概念结构实例总结 概念 桥接模式:将抽象部分与它的实现部分解耦,使得两者都能够独立变化。 毛笔和蜡笔都属于画笔,假设需要有大、中、小三种型号的画笔,绘画出12种颜色,蜡笔需要3*1236支,毛笔需要…

什么是JavaScript中的IIFE(Immediately Invoked Function Expression)?它的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ JavaScript中的IIFE⭐ 示例⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们…

【JavaEE】多线程(三)

多线程(三) 续上文,多线程(二),我们已经讲了 创建线程Thread的一些重要的属性和方法 那么接下来,我们继续来体会了解多线程吧~ 文章目录 多线程(三)线程启动 startsta…

Git学习笔记4

GitHub是目前最火的开源项目代码托管平台。它是基于web的Git仓库,提供公有仓库和私有仓库,但私有仓库是需要付费的。 到Github上找类似的项目软件。 GitLab可以创建免费的私有仓库。 GitLab是利用 Ruby开发的一个开源的版本管理系统,实现一个…

【搭建私人图床】使用LightPicture开源搭建图片管理系统并远程访问

文章目录 1.前言2. Lightpicture网站搭建2.1. Lightpicture下载和安装2.2. Lightpicture网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 现在的手机越来越先进,功能也越来越多,而手机…

基于STM32+华为云IOT设计的智能车库管理系统

一、项目介绍 随着城市化进程和汽车拥有率的不断提高,停车难的问题也日益凸显。在城市中,停车场是一个非常重要的基础设施,但是传统的停车场管理方式存在很多问题,比如车位难以管理、停车费用不透明等。为了解决这些问题&#xf…

时间轮算法

思考 假如现在有个任务需要3s后执行,你会如何实现? 线程实现:让线程休眠3s 如果存在大量任务时,每个任务都需要一个单独的线程,那这个方案的消耗是极其巨大的,那么如何实现高效的调度呢? 时…

goadmin 学习笔记

1.安装命令行 Following three steps to run it. Note: now you can quickly start by doing like this. $ go install github.com/GoAdminGroup/admlatest $ mkdir new_project && cd new_project $ adm init Or (use adm whose version higher or equal than v1.…

2023年信创云管平台选哪家?咨询电话多少?

随着云计算和信创国产化的快速发展,越来越多企业需要支持信创系统的云管平台。但很多企业不知道市面上信创云管平台有哪些,也不知道选哪家?这里我们小编就给大家来回答一下。 2023年信创云管平台选哪家?咨询电话多少?…

剪映软件专业版的操作与使用,电脑版与手机版APP同步讲解

一、教程描述 什么是剪映?抖音官方推出的一款视频编辑工具,用于短视频的剪辑制作和在线发布,主要在手机端使用,同时支持PC端,操作简单易上手,功能也十分强大,使用过剪映的用户,都将…

基于量子粒子群算法(QPSO)优化LSTM的风电、负荷等时间序列预测算法(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

华硕 ASUS U303L 换国产致钛SSD固态硬盘记

ASUS U303L尽享丝滑体验——换装国产致钛SC001 1T SSD 华硕笔记本电脑款式年代久远,东芝的机械硬盘,没有安装SSD的笔记本电脑用久了,卡顿是难免的事情。更换国产致钛固态硬盘后,体验丝一般的感觉,非常成功&#xff01…

nginx: 部署前端项目的详细步骤(vue项目build打包+nginx部署)

目录 第一章 前言 第二章 准备工作 2.1 项目打包理解 2.1.1 打包命令 2.1.2 理解npm run serve/dev 和 npm run build命令 2.2 nginx参数配置理解 2.2.1 nginx常用基本命令 2.2.2 默认配置 2.2.3 搭建不同网站的站点 2.2.4 禁止访问的目录以及一键申请SSL证书验证目录…

【JDK 8-函数式编程】4.4 Supplier

一、Supplier 接口 二、实战 Stage 1: 创建 Student 类 Stage 2: 创建方法 Stage 3: 调用方法 Stage 4: 执行结果 一、Supplier 接口 供给型 接口: 无入参,有返回值(T : 出参类型) 调用方法: T get(); 用途: 如 无参的工厂方法&#x…

【js逆向实战】某讯漫画网站图片逆向

写在前面 本来想更安全开发系列,想着复现一下长亭的rad。里面涉及到好多js逆向的知识,正好学习了一波,本身js逆向也是一个大坑,说不定也能完善好多以前的爬虫项目。 学了也有一段时间了,来练练手吧 涉及到具体的隐私…

service

title: “Service” createTime: 2022-02-11T11:23:2008:00 updateTime: 2022-02-11T11:23:2008:00 draft: false author: “name” tags: [“service”] categories: [“linux”] description: “测试的” linux的Service之旅 1.service 服务权限 systemd有系统和用户区分&…

2023年9月26日,历史上的今天大事件早读

1620年9月26日大明皇帝朱常洛驾崩 1815年9月26日俄、普、奥三国在巴黎发表缔结“神圣同盟” 1841年9月26日清代思想家、诗人龚自珍逝世 1849年9月26日“生理学之父”巴甫洛夫诞生 1909年9月26日云南陆军讲武堂创办 1953年9月26日画家徐悲鸿逝世 1980年9月26日国际宇航联合…

【C++】构造函数和析构函数第一部分(构造函数和析构函数的作用)--- 2023.9.25

目录 前言初始化和清理的概念构造函数和析构函数的作用构造函数的作用析构函数的作用 使用构造函数和析构函数的注意事项默认的构造函数和析构函数结束语 前言 在使用c语言开发的项目场景中,我们往往会遇到申请空间的需求,同时也肯定遇到过程序运行一段…

phpstudy2016 RCE漏洞验证

文章目录 漏洞描述漏洞验证 漏洞描述 PHPStudyRCE(Remote Code Execution),也称为phpstudy_backdoor漏洞,是指PHPStudy软件中存在的一个远程代码执行漏洞。 漏洞验证 打开phpstudy2016,用bp自带的浏览器访问www目录下…