数学建模-基于脑出血患者院前指标的多种机器学习预测模型构建及比较研究

基基于脑出血患者院前指标的多种机器学习预测模型构建及比较研究

整体求解过程概述(摘要)

  卒中是全球致残率、致死率最高的疾病之一,其中脑出血(Intracerebral hemorrhage,ICH)患者仅占卒中患者的 20%,但致残、死亡人数与缺血性卒中无明显差异,由于病程短,发展迅速的特点,以农村地区为代表的经济欠发达地区,受限于交通以及基层医疗水平的欠缺,往往无法得到完整、可信的医疗检查从而不利于正确医疗干预的实施,给国家及患者家庭带来了巨大的精神与经济负担。目前 ICH 患者神经功能预后预测模型多基于传统方法如 Logistic 回归,主要关注院中指标对神经功能预后的影响,往往忽略院前指标的重要作用。ICH 患者的救治时间窗短,须在有限时间内快速制定合理、有效的治疗方案,因此利用可快速获取的院前指标建立神经功能预后模型,阐明各指标变量在疾病发展的中发挥的作用,并利用该类指标变量建立治疗方案相关指南是未来研究的重要方向。方法: 目前,国内基于有监督的机器学习方法对 ICH 患者神经功能预后分类模型相关研究较少,高性能预测模型缺乏,不利于脑出血相关临床实验的观察单位的纳入排除标准设置,极大程度阻碍了脑出血患者的前瞻性研究设计,导致相关疾病高质量循证医学证据进展迟缓。
  本文首先使用 Logistic 回归模型、Lasso 回归模型,对院前指标进行筛选,证明了院前指标相较于以往认为占据主导因素的院中指标,同样对 ICH 患者神经功能预后有重要影响,后利用多种新型机器学习方法如支持向量机、随机森林等建立神经功能预后预测模型,通过多模型间性能的比较研究,阐述了决策树类算法及其衍生算法随机森林在信息数据共享的大数据时代,在预测神经功能预后普遍不良的脑出血疾病的显著优势。

问题分析

  ICH 患者神经功能预后普遍较差,治疗方案拟定难度大,治疗效果低于预期,甚至出现不利影响,因此如何利用 ICH 患者病史资料以及入院体征,结合目前最新的机器学习分类模型构建神经功能预后预测模型是改善脑出血患者结局的重要问题。入院前指标,包含吸烟、喝酒、既往卒中史等既往病史资料等以及入院体征检查如 NIHSS、GCS 等量表评分,是制定治疗方案前 ICH 患者最易获取的指标变量,但是目前的研究者往往忽略院前指标的重要作用,故本文旨在探究 ICH患者院前指标对患者神经功能预后的影响,并尝试建立一种性能较好的预测模型,为临床治疗提供一定的指导。
  国内既往研究多采用传统的统计方法建模,不适用于复杂的临床情况以及临床需求,本文采用有监督的分类机器学习方法,希望利用院前指标建立 ICH 患者神经功能预后的相关预测模型,并且比较研究基于各种机器学习方法建立的预测模型性能、适用场景以及优化方案,机器学习方法涵盖经典决策树、条件推断树、随机森林、支持向量机等五种机器学习方法。本文技术路线如图 1 所示:
在这里插入图片描述

模型的建立与求解

  本文首先以 ICH 患者院前指标及院中指标为自变量,神经功能预后情况为结局变量,采用 Logistic 回归、lasso 回归进行变量筛选,探究各种指标对 ICH 患者神经功能预后是否有显著影响。后以 ICH 患者院前指标为自变量,神经功能预后情况为结局变量,训练支持向量机、BP 神经网络、决策树及随机森林等五个机器学习方法,以比较研究各类模型在基于院前指标预测 ICH 患者神经功能预后的性能。
  (一)影响因素筛选方法
  1.Logistic 回归(Logistic Regression)
  Logistic 回归是处理二分类资料的标准方法。属于概率型非线性回归,多用于临床医学的鉴别诊断、评价治疗策略、分析疾病预后因素等。设有一个应变量 Y 和 m 个自变量𝑋1,𝑋2,…,𝑋𝑚,应变量 Y 是个二值变量时,取值为
在这里插入图片描述
  该公式称为 logit 模型。记𝑍 = 𝛼 + 𝛽1𝑋1 + 𝛽2𝑋2 + ⋯ + 𝛽𝑚𝑋𝑚,那么 Z 和 P 之间关系的 Logistic 曲线如下图 2 所示
在这里插入图片描述

模型的建立与求解整体论文缩略图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

(代码和文档not free)

lines = ["北京协和医院~病案记录~姓名~任~发~君~2~病案号1~5~40000~2008-9-5~首次病程记录~、本例特点:~1、中年男性,急性起病,病程3月。~2、主要表现为车祸撞伤后乏力、头晕、头痛,嗅觉减退,视力下降,无意识障碍,食欲可。~28~外院检查提示低血钠,血钠最低123mmol/L,尿钠排出增多,经静脉和口服补钠后血钠有所~请~上升,目前未予特殊处理,入院查血钠128mmol/L。~勿~3、既往史、个人史、家族史无特殊。~写~4、查体:136.5℃,P66次/分,R20次/分,BP坐立卧均为130/90mmHg。皮肤不干、~过~不潮,无明显皮肤色素沉着。浅表淋巴结未触及肿大。甲状腺不大。心率66次/分,律齐。~此~双肺呼吸音清,未闻及干湿啰音。腹软,剑突下轻压痛,无反跳痛,肝脾肋下未及。双下~线~肢无水肿。~5、辅助检查:外院查查A10.7ng/ml/h(0.93~6.56),A2112.7pg/m1(55.3~115.3),ALD19.6pg/m1(65.2-295.7),GH1.21ng/m1(10.0),颅脑、胸、~上腹、腰椎、肾上腺CT示左眶内壁骨折、副鼻窦炎、左侧肋骨多发骨折,L2~椎体骨折并15水平椎管内积气,右肺下叶支气管扩张,纵隔囊肿,左侧肾上~腺外侧支增厚,双肾囊肿,颅脑MRI示脑内多发缺血灶,垂体MRI未见明显异~常。~拟诊讨论:~患者中年男性,车祸后急性起病,病程3月,主要表现为乏力、头晕、头痛、视力下~降,多次化验血钠<135mmol/L,低钠血症诊断明确。低钠血症病因方面,患者无呕吐、腹~泻,无消化道丢失证据:无大量出汗、烧伤的病史,皮肤丢失不支持;考虑肾性失钠的可~能性比较大。~肾性失钠的原因方面,无口服利尿剂史;无慢性肾脏疾病病史,肾功能正常;无肾上~腺皮质功能不全表现,外院检查血皮质醇正常;甲状腺功能正常;血钠明显降低,最低~123mmol/L,考虑抗利尿激素不适当分泌综合征(SIADH)可能。SIADH常见于(1)肺部疾~病:包括肿瘤等,肿瘤可分泌ADH,引起血钠降低,但患者外院肺部C未见明显异常不支~持。(2)神经系统疾病:头部外伤、手术、颅内出血、肿瘤等使下丘脑分泌ADH增多,引~起血钠降低,患者有车祸后头部外伤史,外院颅脑MRI示脑内多发缺血灶,垂体MRI~未见明显异常。考虑车祸后头部外伤导致STADH的可能性比较大,因此需进一步检查明~确。~诊疗计划~1、入院常规检查。~、生动限水,高钠饮食,记246出入量,监测血、尿电解质变化。~3、复查24小时UIFC、血ACH、血、甲功、血脂。~4、肿瘤标记物及影像学检查寻找有无肿瘤。~5、明确诊断后决定下一步治疗方案。~戴宝丽~2008-9-6~许岭翎主治医师、曹彩霞代主治医师首次查房记录:补充病史患者车祸初时外院查电~解质正常,车祸后头部外伤,外院影像学检查可见明确颅内血肿,后多次查电解质血钠均~低,因而有明确低钠病史3月。低钠血症可按不同的渗透压分为多种类型。内分泌方面的~病因有:1.继发于甲低的稀释性低钠血症,患者外院甲功检查正常,不支持,入院后可复~查该项指标明确;2.继发于肾上腺皮质功能不全的低血容量性低钠血症,患者往往有食欲~MR.232008.1300本B"
        ]

total_exam_result = []#用来存储所有的检查
total_sys_result = []  #用来存储所有的症状
total_test_result = []#用来存储所有的化验
for line in lines:
    line = line.split('。')
    exam_result = [""] #先将检查的列表设置为包含一个空字符串
    sys_result = [""] #先将症状的列表设置为包含一个空字符串
    test_result = [""] #先将化验的列表设置为包含一个空字符串
    first_result = [""]
    tem_result = [""]
    number1 = 0
    number2 = 0
    number3 = 0
    is_begin = True
    is_false = 0
    for idx, content in enumerate(line):
        content += "。"
        if "检查" in content or "查体" in content or "检~查" in content or "诊断" in content or \
                ("患者" in content and "就诊" in content) or ("门诊" in content and "收入院" in content) or "病以来" in content \
            or ("乏力" in content or "头晕" in content or "头痛" in content) or "化验" in content:
            if "检查" in content or "查体" in content or "检~查" in content:
                if number1 == 0 and len(first_result) > 0 and is_begin:
                    exam_result[-1] += first_result[-1]
                    exam_result[-1] += content
                    is_begin = False
                else:
                    exam_result[-1] += content
                # if tem_result != [""]:
                #     exam_result[-1] += tem_result[-1]
                #     tem_result = [""]
                is_false = 1
                number1 += 1

            if "诊断" in content or ("患者" in content and "就诊" in content) or ("门诊" in content and "收入院" in content) or "病以来" in content \
                or ("乏力" in content or "头晕" in content or "头痛" in content):
                if number2 == 0 and len(first_result) > 0 and is_begin:
                    sys_result[-1] += first_result[-1]
                    sys_result[-1] += content
                    is_begin = False
                else:
                    sys_result[-1] += content
                is_false = 2
                number2 += 1
            if "化验" in content and ("乏力" not in content or "头晕" not in content or "头痛" not in content):
                if number3 == 0 and len(first_result) > 0 and is_begin:
                    test_result[-1] += first_result[-1]
                    test_result[-1] += content
                    is_begin = False
                else:
                    test_result[-1] += content
                is_false = 3
                number3 += 1
                # continue
        else:
            number = number1 + number2 + number3
            if number == 0:
                first_result[-1] += content
            else:
                tem_result[-1] += content
        if is_false == 1:
            exam_result[-1] += tem_result[-1]
            tem_result = [""]
        if is_false == 2:
            sys_result[-1] += tem_result[-1]
            tem_result = [""]
        if is_false == 3:
            test_result[-1] += tem_result[-1]
            tem_result = [""]
    total_exam_result.append(exam_result)
    total_sys_result.append(sys_result)
    total_test_result.append(test_result)
print(total_exam_result)
print(total_sys_result)
print(total_test_result)
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习】KMeans中自动K值的确认方法

1 前言 聚类常用于数据探索或挖掘前期,在没有做先验经验的背景下做的探索性分析,也适用于样本量较大情况下的数据预处理等方面工作。例如针对企业整体用户特征,在未得到相关知识或经验之前先根据数据本身特点进行用户分群,然后再…

【腾讯云云上实验室】个人对腾讯云向量数据库的体验心得

目录 前言Tencent Cloud VectorDB概念使用初体验腾讯云向量数据库的优势应用场景有哪些?未来展望番外篇:腾讯云向量数据库的设计核心结语 前言 还是那句话,不用多说想必大家都能猜到,现在技术圈最火的是什么?非人工智…

Spring Security 6.x 系列(7)—— 源码分析之建造者模式

一、建造者模式 WebSecurity、HttpSecurity、AuthenticationManagerBuilder 都是框架中的构建者,把他们放到一起看看他们的共同特点: 查看AuthenticationManagerBuilder的继承结构图: 查看HttpSecurity的继承结构图: 查看WebSec…

Logstash使用指南

介绍 Logstash是一个开源数据收集引擎,具有实时管道功能。它可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地。尽管Logstash的早期目标是搜集日志,现在它的功能已完全不只于此。任何事件类型都可以加入分析&…

鸿蒙原生应用/元服务开发-开发者如何进行真机测试

前提条件:已经完成鸿蒙原生应用/元服务开发,已经能相对熟练使用DevEco Studio,开发者自己有鸿蒙4.0及以上的真机设备。 真机测试具体流程如下 1.手机打开开发者模式 2.在项目中,左上角 文件(F)->项目结构 进行账号连接 3.运行

智慧配电间(配电室智能监控)

智慧配电间是一种应用物联网、云计算、大数据等先进技术,对配电室进行智能化改造和升级,依托电易云-智慧电力物联网,实现电力设备的实时监控、智能控制和远程管理的解决方案。以下是智慧配电间的主要功能和特点: 实时监控与数据分…

简明指南:使用Kotlin和Fuel库构建JD.com爬虫

概述 爬虫,作为一种自动化从网络上抓取数据的程序,广泛应用于数据分析、信息提取以及竞争对手监控等领域。不同的实现方式和编程语言都能构建出高效的爬虫工具。在本文中,我们将深入介绍如何充分利用Kotlin和Fuel库,构建一个简单…

【蓝桥杯选拔赛真题28】C++口罩分配 第十三届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析

目录 C/C++口罩分配 一、题目要求 1、编程实现 2、输入输出 二、算法分析 <

IOS/安卓+charles实现抓包(主要解决证书网站无法打开问题)

安装 官网下载 https://www.charlesproxy.com/latest-release/download.do 安装charles文档 流程 上述链接解决下图问题 使用介绍 Charles介绍 上述链接看一至三即可&#xff0c;了解首页各个按钮的作用 charles全面使用教程及常见功能详解&#xff08;较详细&#xff09…

常见智力题汇总

常见智力题汇总 扔瓶子问题扑克牌问题出队问题烧绳子问题赛马问题求出前三名求出前五名 接水问题种树问题硬币问题宝石问题核酸检测问题 笔者最近面试遇到了好几道智力题&#xff0c;这些题目特点就是如果没有见过&#xff0c;很难第一时间思考得到答案&#xff0c;因此笔者面试…

Spire.Office 8.11.2 for NET fix Crack

内容摘自来自互联网------或者SDK官方本身手册 Spire.Doc for .NET A professional Word .NET library designed to create, read, write, convert and print Word document files in any .NET ( C#, VB.NET, ASP.NET, .NET Core, Xamarin ) application with fast and high qu…

常见算法

简单认识算法 什么是算法&#xff1f; 解决某个实际问题的过程和方法&#xff01; 排序算法 冒泡排序 选择排序 冒泡排序 每次从数组中找到最大值放在数组的后面去 import java.util.Arrays;public class Work1 {public static void main(String[] args) {//准备一个数组in…

Windows11如何让桌面图标的箭头消失(去掉快捷键箭头)

在Windows 11中&#xff0c;桌面图标的箭头是快捷方式图标的一个标志&#xff0c;用来表示该图标是一个指向文件、文件夹或程序的快捷方式。如果要隐藏这些箭头&#xff0c;你需要修改Windows注册表或使用第三方软件。 在此之前&#xff0c;我需要提醒你&#xff0c;修改注册表…

Unity3D 导出的apk进行混淆加固、保护与优化原理(防止反编译)

​ 目录 前言&#xff1a; 准备资料&#xff1a; 正文&#xff1a; 1&#xff1a;打包一个带有签名的apk 2&#xff1a;对包进行反编译 3&#xff1a;使用ipaguard来对程序进行加固 前言&#xff1a; 对于辛辛苦苦完成的apk程序被人轻易的反编译了&#xff0c;那就得不偿…

vue之mixin混入

vue之mixin混入 mixin是什么&#xff1f; 官方的解释&#xff1a; 混入 (mixin) 提供了一种非常灵活的方式&#xff0c;来分发 Vue 组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时&#xff0c;所有混入对象的选项将被“混合”进入该组件本身的…

C++——AVL树

作者&#xff1a;几冬雪来 时间&#xff1a;2023年11月30日 内容&#xff1a;C板块AVL树讲解 目录 前言&#xff1a; AVL树与搜索二叉树之间的关系&#xff1a; AVL树概念&#xff1a; 插入结点&#xff1a; 平衡因子&#xff1a; 旋转&#xff1a; 双旋&#xff1a; …

C语言每日一题(42)删除链表的倒数第N个结点

力扣网 19 删除链表的倒数第N个结点 题目描述 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head …

基于php的求书网的设计与实现

摘 要 伴随着信息技术的飞速发展&#xff0c;以及百姓生活品质的改善&#xff0c;电商也成为人们日常生活不可或缺的构成要素。网上商城已然成为了电子商务最最普遍的一种形式&#xff0c;已被大家逐渐接受并且去实施。所以本文提出的求书网站开发能够充分适合当今形势&#x…

目标检测——SPPNet算法解读

论文&#xff1a;Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition 作者&#xff1a;Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun 链接&#xff1a;https://arxiv.org/abs/1406.4729 目录 1、算法概述2、Deep Networks with Spatia…

11月30日作业

设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函数、析构函数和拷贝构造函数 #include <iostream>using namespace std;class …