2023认证杯数学建模第二阶段C题完整原创论文讲解

news2024/10/7 5:23:17

大家好呀,从昨天发布赛题一直到现在,总算完成了认证杯二阶段C题完整的成品论文。

本论文可以保证原创,保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。

C第二阶段完整论文共64页,一些修改说明7页,正文47页,附录10页。
认证杯C题二阶段与一阶段最大的区别是题目给出了具体的类别,这样就可以机器学习进行分类预测了,首先当然还是合并数据提取特征,之后我先建立了原始的分类模型,也就是对6个分类直接预测,精度较低,但可以给出误判虚警的计算表,也可以为后面做铺垫。之后是最危急情境和其他情境分别做两个分类预测模型,测试集精度提升很多,这里我在论文会有一页的获奖点说明,拿到论文的人好好看。第二问的话要细化分类,还是聚类分析,第二问最难的是聚类分析指标选取后结合题目给出的各种失常细类的医学机理分析,这里我花了3个小时分析各个细类的特征机理,之后就结合着无脑聚类了,至此一个片段第一问能判断分类,第二问能判别细化分类,求解完成。

实在精力有限,没力气打太多字做文字版讲解了,可能讲得不够详细,可以看我的视频讲解

2023认证杯数学建模第二阶段C题手把手保姆级完整教学!_哔哩哔哩_bilibili

本文很长,大家一口气看不完别忘了点赞收藏一下防止迷路哈。

OK,这里是我的

目录:

摘要:

第二阶段问题: 心电数据经过专家的仔细判读,被分成了几个心律失常的类 别。数据文件根据判读结果进行了重新的命名。并根据其危险程度分为 6 个 级别,危险程度依次递降:
1. 危及生命的心律失常,需要立即抢救:心室扑动(VFL);心室颤动(VF)。
2. 危及生命的心律失常:尖端扭转型室性心动过速(VTTdP)。
3. 威胁生命的室性心律失常:高频室性心动过速(VTHR)。
4. 有潜在危险的室性心律失常:低频室性心动过速(VTLR);室性早搏二 联律(B);高度室性异位搏动(HGEA);室性逸搏心律(VER)。
5. 室上性心律失常:心房颤动(AFIB);室上性心动过速(SVTA);窦性心动 过缓(SBR);一级传导阻滞(BI);结性心律(NOD)。
6. 无显著危险的以及正常的窦性心律:窦性心律伴束支阻滞(BBB);伴单次期外收缩的窦性心律(Ne);正常窦性心律(N)。

问题 1:

我们希望对危险程度构造一个分类算法并部署在心电图机上,当遇 到对生命有威胁的情况时可以发出告警。对危急情境的判断时间不能超过 2 秒,所以只能使用数据集中的数据进行验证(数据集中的每个数据文件都由 时长为 2 秒的心电片段处理而来),而且如需提取数据的时域特征,不允许对 数据在时域上进行周期延拓等操作。当然判断时间可以比 2 秒更短。对威胁 级别的判断降低 1 级(如将 3 级误判为 4 级)称为轻微误判,降低 2 级及以上 (如将 3 级误判为 5 级)称为严重误判,升高 1 级称为轻微虚警,升高 2 级或以上称为严重虚警。我们至少要求,对最危急的情境(第 1,2 级),判断的灵敏度 (sensitivity)和特异度(specifity)均不能低于本数据集能计算的最大值(即使用本数据集无法算出其与 1 的区别)。对其他危险等级的情境,请你和你的团队根据医疗实际(可以使用以上给出的概念),对算法的性能提出合理的要求。并建立有效的数学模型,构造分类算法满足此要求。

首先合并数据:

每一个类别都要合并,例如第一个类别:

提取特征:

提取后先建立6个类别的原始分类模型:

实际分类预测:

预测精度:

预测分类结果:

计算可以得到误判和虚警情况表:

实际上要判别的最危急情境:

预测结果:

训练集达到1,已经是本数据集能计算的最大的灵敏度 (sensitivity)和特异度(specifity)。

测试集相对于原始分类模型有很大提升。

论文里这里我写了个获奖点说明:

看一下分类预测结果表吧:

测试集一共是305条:

针对于其他危险等级的情境:

一样的步骤,先划分类别:

然后机器学习分类即可,看一下预测结果吧:

精度相对于原始分类模型也有很大提升。第一问结束。

问题2:

我们希望在问题 1 的基础上,进一步对不同类型的心律失常进行判 别。最终的判别算法要满足问题 1 中的要求,并在每个危险级别中进行具体的分类。请你和你的团队建立合理的数学模型以构造对不同类别心律失常的分类算法,并对算法的性能作出详细的评述。

这一问最难的是要确定到底用什么特征去划分这些细类:

针对于这些细类,特征又应该怎么排序。

举个例子,如果你用每个片段的均值去进行划分,那你首先要从医学机理的角度分析,这里面每一个细类的均值到底有没有差别,以及如果有,那么每个细类到底谁的片段数据的均值更大?

所以,难点在于,要搜集和阅读大量的关于这里面每一个细类的医学机理分析说明,这里我花了整整3个多小时研究每一个细类的心电图,做了每个类别的医学机理分析:

之后就是聚类分析了:

至此,在导入任意一个片段数据后,我们不但可以通过第一问的机器学习算法得出其最危急情境和其他情境的分类判别,还可以在判别之后,通过我们所建立的聚类分析模型中判别其具体所属的细类划分。

OK结束。

附一些模板代码吧:

注意,不是我实际求解用的哈:

function  [tree,discrete_dim] = train_C4_5(S, inc_node, Nu, discrete_dim)  
      
    % Classify using Quinlan's C4.5 algorithm  
    % Inputs:  
    %   training_patterns   - Train patterns 训练样本  每一列代表一个样本 每一行代表一个特征
    %   training_targets    - Train targets  1×训练样本个数 每个训练样本对应的判别值
    %   test_patterns       - Test  patterns 测试样本,每一列代表一个样本  
    %   inc_node            - Percentage of incorrectly assigned samples at a node  一个节点上未正确分配的样本的百分比
    %   inc_node为防止过拟合,表示样本数小于一定阈值结束递归,可设置为5-10
    %   注意inc_node设置太大的话会导致分类准确率下降,太小的话可能会导致过拟合  
    %  Nu is to determine whether the variable is discrete or continuous (the value is always set to 10)  
    %  Nu用于确定变量是离散还是连续(该值始终设置为10)
    %  这里用10作为一个阈值,如果某个特征的无重复的特征值的数目比这个阈值还小,就认为这个特征是离散的
    % Outputs  
    %   test_targets        - Predicted targets 1×测试样本个数 得到每个测试样本对应的判别值
    %   也就是输出所有测试样本最终的判别情况
      
    %NOTE: In this implementation it is assumed that a pattern vector with fewer than 10 unique values (the parameter Nu)  
    %is discrete, and will be treated as such. Other vectors will be treated as continuous  
    % 在该实现中,假设具有少于10个无重复值的特征向量(参数Nu)是离散的。 其他向量将被视为连续的
    train_patterns = S(:,1:end-1)';      
    train_targets = S(:,end)';   
    [Ni, M]     = size(train_patterns); %M是训练样本数,Ni是训练样本维数,即是特征数目
    inc_node    = inc_node*M/100;  % 5*训练样本数目/100
    if isempty(discrete_dim)  
        %Find which of the input patterns are discrete, and discretisize the corresponding dimension on the test patterns  
        %查找哪些输入模式(特征)是离散的,并离散测试模式上的相应维
        discrete_dim = zeros(1,Ni); %用于记录每一个特征是否是离散特征,初始化都记为0,代表都是连续特征,
        %如果后面更改,则意味着是离散特征,这个值会更改为这个离散特征的无重复特征值的数目 
        for i = 1:Ni  %遍历每个特征
            Ub = unique(train_patterns(i,:));  %取每个特征的不重复的特征值构成的向量 
            Nb = length(Ub);    %得到无重复的特征值的数目
            if (Nb <= Nu)  %如果这个特征的无重复的特征值的数目比这个阈值还小,就认为这个特征是离散的  
                %This is a discrete pattern  
                discrete_dim(i) = Nb; %得到训练样本中,这个特征的无重复的特征值的数目 存放在discrete_dim(i)中,i表示第i个特征
    %             dist            = abs(ones(Nb ,1)*test_patterns(i,:) - Ub'*ones(1, size(test_patterns,2))); 
    %             %前面是把测试样本中,这个特征的那一行复制成Nb行,Nb是训练样本的这个特征中,无重复的特征值的数目
    %             %后面是把这几个无重复的特征值构成的向量复制成测试样本个数列
    %             %求这两个矩阵相应位置差的绝对值
    %             [m, in]         = min(dist);  %找到每一列绝对差的最小值,构成m(1×样本数目)   并找到每一列绝对差最小值所在行的位置,构成in(1×样本数目)
    %             %其实,这个in的中每个值就是代表了每个测试样本的特征值等于无重复的特征值中的哪一个或者更接近于哪一个
    %             %如=3,就是指这个特征值等于无重复的特征值向量中的第3个或者更接近于无重复的特征值向量中的第3个
    %             test_patterns(i,:)  = Ub(in);  %得到这个离散特征
            end  
        end  
    end

以上我所有用到的数据表格和求解的结果表格如下:

OK,就讲到这里吧,实在太累了,讲解得可能不够详细,详细的讲解视频,以及以上所有的数据表格和完整成品论文大家点击下方我的个人卡片查看哈↓:

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

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

相关文章

越跌越买!192亿大举抄底

虽然本周主流大盘指数表现乏力&#xff0c;但股票ETF市场再现资金逢低“扫货”。 截至6月9日收盘&#xff0c;全市场736只股票ETF&#xff08;统计股票ETF和跨境ETF&#xff09;总份额增长196亿份&#xff0c;净流入资金约192亿元&#xff0c;再现“越跌越买”的趋势。 其中&…

理解原子操作与CAS锁

理解原子操作与CAS锁实现 线程间内存访问同步的问题理解cpu的存储体系结构cpu存储架构cache line了解一下写回策略 write-back多线程运行在cpu的多核之中&#xff0c;数据怎么共享&#xff0c;怎么同步&#xff1f;通过事件串行化通过MESI 原子操作CAS锁 线程间内存访问同步的问…

chatgpt赋能python:如何去除Python列表中的中括号

如何去除Python列表中的中括号 在Python中&#xff0c;列表是一个非常重要的数据类型。它可以存储多个不同类型的元素&#xff0c;并且可以动态地增加或删除元素。但是&#xff0c;有时候我们需要将列表中的元素取出来&#xff0c;而不想要中括号。本文将介绍两种不同的方法来…

.net framework 命令行项目使用 sqlite,DbContext

文章目录 背景描述实际操作环境安装Nuget包安装三者之间的关系ORM解释 项目从零开始创建过程新建项目安装nugetDB first和Code first新建文件注意&#xff0c;DbContext命名运行测试基础增删改查和原生sql操作查增&#xff0c;删&#xff0c;改增改删 sql语句执行sql查询sql执行…

QFIELD在遥感数据处理中的应用

概述 从卫星图像生成的土地覆盖绘图需要地面实况数据&#xff0c;以便“训练”分类算法&#xff0c;并计算最终地图的准确性。地面实况数据由具有准确位置的数据点和来自已知土地覆盖类型的预定义列表的标签组成。本教程将指导用户完成斐济苏瓦训练区的地面实况数据收集。 收…

chatgpt赋能python:Python反向画圆的方法

Python反向画圆的方法 介绍 Python是一种高级编程语言&#xff0c;在数据科学、机器学习、Web开发等领域具有广泛的应用。其中&#xff0c;Python的图形绘制能力也颇为强大&#xff0c;可以利用Python编写出各种图形和动画效果。本文将介绍Python如何反向画圆&#xff0c;通过…

chatgpt赋能python:Python如何去除空行?

Python如何去除空行&#xff1f; 在Python编程中&#xff0c;经常会遇到需要去除文本文件或字符串中的空行的情况。空行通常是在文件或字符串中不希望存在的&#xff0c;因为它们可能会影响代码的可读性和执行效率。但是&#xff0c;如何才能在Python中高效地去除空行呢&#…

CSS布局模式之Flex布局Grid布局

文章目录 1. 简介1.1 什么是CSS布局&#xff1f;1.2 为什么使用CSS布局&#xff1f; 2. Flex布局2.1 什么是Flex布局&#xff1f;2.2 Flex容器和Flex项目2.3 Flex容器的属性2.3.1 flex-direction2.3.2 justify-content2.3.3 align-items2.3.4 align-content 2.4 Flex项目的属性…

计算机视觉-目标检测(一):从 R-CNN 到 Faster R-CNN

文章目录 1. 概要2. 区域卷积卷积神经网络R-CNN2.1 模型结构2.2 Selective Search2.3 warp2.4 R-CNN训练2.5 R-CNN推理2.6 R-CNN性能评价2.7 R-CNN的缺点 3. SPP-Net3.1 SPP-Net对RCNN的改进3.2 SPP-Net网络结构3.3 SPP-Net训练过程3.4 SPP-Net的问题 4. Fast R-CNN4.1 Fast R-…

浅析设计模式 -- 责任链模式

目录 前言 概述 基本概念 ▐ 结构 ▐ 使用 使用示例 ▐ 代码实现​​​​​​​ ▐ 结果输出 ▐ UML图 扩展 源码赏析 优缺点及适用场景 ▐ 优点 ▐ 缺点 ▐ 适用场景 前言 我们在进行软件开发时要想实现可维护、可扩展&#xff0c;就需要尽量复用代码&…

【数据结构与算法】深入浅出:单链表的实现和应用

&#x1f331;博客主页&#xff1a;青竹雾色间. &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 ✨人生如寄&#xff0c;多忧何为 ✨ 目录 前言 单链表的基本概念 节点 头节点 尾节点 单链表的基本操作 创建单链表 头插法&#xff1a; 尾插法&#…

Shell脚本学习记录(常见指令)

Shell echo命令 Shell 的 echo 指令与 PHP 的 echo 指令类似&#xff0c;都是用于字符串的输出。命令格式&#xff1a; echo string 1.显示普通字符串: echo "It is a test" //双引号省略效果相同 2.显示转义字符 echo "\"It is a test\"" …

chatgpt赋能python:Python取出字典中键名对应的值

Python取出字典中键名对应的值 作为一个有10年Python编程经验的工程师&#xff0c;我经常遇到需要从字典中取出键名对应的值的情况。在这篇文章中&#xff0c;我将介绍Python中几种不同的方法来执行这个任务&#xff0c;并提供有关每个方法的优缺点的评估。让我们开始吧&#…

chatgpt赋能python:Python怎么取余数?

Python怎么取余数&#xff1f; 在Python中&#xff0c;我们经常需要进行数学运算&#xff0c;而其中计算余数也是经常用到的。虽然计算余数的方法似乎很简单&#xff0c;但是在不同的编程语言中有些微小的差异。本文将介绍在Python中如何高效地计算余数&#xff0c;以及一些相…

【动态规划】NK刷题记之DP6 连续子数组最大和(C语言实现)

【动态规划】NK刷题记之DP6 连续子数组最大和&#xff08;C语言实现&#xff09; 一、题目二、题解 2.1动态规划2.2贪心算法2.1.1 贪心算法的定义2.2.2贪心算法的性质2.2.3本题的贪心算法解决思路 2.2.4贪心与动态规划的区别 三、代码实现 3.1法一&#xff1a;动态规划(递归实…

无需公网IP,在家使用IPV6和电信光猫进行内网穿透以搭建远程主机

ipv4的公网IP弄起来还是比较麻烦&#xff0c;所以不管是搭建私人NAS还是远程登陆主机都总是需要进行内网穿透。一般的方案都是用花生壳这类的商用服务&#xff0c;然而这些服务一方面又贵又慢还有流量限制&#xff0c;另一方面还要进行把三代信息都盘出去的实名认证 1G到5G一个…

System V通信

文章目录 共享内存什么是共享内存&#xff08;物理内存块属性&#xff09;共享内存的接口认识查看共享内存删除共享内存共享内存的创建&#xff08;ftok和shmget&#xff09;挂接和去关联&#xff08;shmat和shmdt&#xff09; 利用共享内存通信&#xff08;简单的代码演示&…

Vue中如何进行数据缓存

Vue中如何进行数据缓存 Vue是一款流行的前端框架&#xff0c;它提供了许多方便的功能来处理数据。其中一个非常有用的功能是数据缓存。数据缓存可以提高应用程序的性能&#xff0c;减少网络请求&#xff0c;提高用户体验。在本文中&#xff0c;我们将介绍Vue中如何进行数据缓存…

chatgpt赋能python:Python如何取三位小数

Python 如何取三位小数 Python 是一种很强大的编程语言&#xff0c;可以应用于各个领域。其中&#xff0c;处理数字也是 Python 的一项强大功能。当我们需要对数字进行精细的操作时&#xff0c;常常需要使用到取小数的功能。本文将介绍如何使用 Python 取三位小数&#xff0c;…

Qgis中进行Shp和Excel属性连接实现百强县公共预算空间分析

前言 在之前的博文中&#xff0c;将2022的全国百强县一般公共预算收入的数据下载到了本地&#xff0c;博客原文地址&#xff1a;一种使用Java的快速将Web中表格转换成Excel的方法。对于不关注时空位置关系的一般分析&#xff0c;到此也就基本够用了。但是&#xff0c;如果站在全…