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

news2024/11/16 11:37:44

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

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

  卒中是全球致残率、致死率最高的疾病之一,其中脑出血(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名片即可

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

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

相关文章

Retrobatch for mac图片批处理软件

Retrobatch是一款功能强大的图片批量操作软件,提供了批量加水印、裁剪、压缩等功能,而且处理速度非常快。 在Retrobatch中,用户可以通过拖动相应动作到工作区形成节点(Nodes),并将节点连接起来形成一个Workflow,最后运…

SpringBoot application.yml配置文件写法

1,基本介绍 (1)YAML 是 JSON 的超集,简洁而强大,是一种专门用来书写配置文件的语言,可以替代 application.properties。 (2)在创建一个 SpringBoot 项目时,引入的 spri…

Windows系统搭建Appium 2 和 Appium Inspector 环境

前言 自 2022 年 1 月 1 日起,Appium 核心团队不再维护 Appium 1.x。官方支持的平台驱动程序的所有最新版本均不兼容 Appium 1.x,需要 Appium 2 才能运行。 Appium 2是一个自动化移动应用程序的开源工具,它带来了以下重要改进:  …

【Linux】进程控制--进程创建/进程终止/进程等待/进程程序替换/简易shell实现

文章目录 一、进程创建1.fork函数2.fork函数返回值3.写时拷贝4.fork常规用法5.fork调用失败的原因 二、进程终止1.进程退出码2.进程退出场景3.进程常见退出方法 三、进程等待1.为什么要进行进程等待2.如何进行进程等待1.wait方法2.waitpid方法3.获取子进程status4.进程的阻塞等…

对接电商平台高效获取各大电商平台数据,商品详情数据代码示例

电商可以通过使用API接口获取商品信息数据。API是应用程序编程接口的缩写,它允许程序之间进行通信和数据传输。为了获取商品信息数据,电商可以利用API接口向商品供应商的数据库发送请求,然后接收并解析返回的数据。 具体来说,电商…

高压放大器用于什么地方使用

高压放大器是一种电子设备,用于将低电压信号放大到高电压水平。它主要应用于需要高电压的领域,下面将详细介绍其主要应用地方。 科研实验室:科研实验室通常需要进行高电压实验,例如粒子加速器、高压放电实验等。高压放大器可以为这…

uniapp和vue3+ts实现自定义头部导航栏左侧胶囊内容

由于某些原因,可能需要我们自己定义头部导航栏的内容,实现各种设计师画的设计稿,所以就需要这个自定义的组件,实现的内容:自定义标题和左侧胶囊图标内容,也可以自定义搜索内容到里面,实现的效果…

网络和Linux网络_7(传输层)UDP和TCP协议(端口号+确认应答+超时重传+三次握手四次挥手)

目录 1. 重看端口号 1.1 端口号的概念 1.2 端口号的划分 2. 重看UDP协议 2.1 UDP协议格式 2.2 UDP的特点 3. 重看TCP协议 3.1 TCP协议格式 3.2 TCP的解包分用 3.3 TCP的可靠性及机制 3.3.1 确认应答ACK机制 3.3.2 超时重传机制 3.3.3 连接管理机制(三次…

HCIP-十三、BGP综合选路

十三、BGP综合选路 实验拓扑实验需求及解法1.预配置包括2.在所有设备的系统视图下配置全局router id为Loopback0地址。3.内部网关协议IGP4.建立BGP邻居5.发布BGP路由6.协议优先级选路7. 权重(PrefVal)选路8.本地优先(LocPrf)选路9…

linux 消息队列apache-activemq服务的安装

1.下载 官网下载地址:https://activemq.apache.org/ 操作如下: 2. 解压 执行:tar -zxvf apache-activemq-5.18.3-bin.tar.gz -C /user/ 3. 进入目录 执行:cd /user/apache-activemq-5.18.3 4.修改配置文件 执行&#xff1…

【分享】centos7vim异常

问题描述: 虚拟机安装centos7,安装vim后异常,上下左右键会变成abcd,退格键无法删除。 系统版本: CentOS Linux release 7.5.1804 (Core) 原因: 暂时未知,有可能是vim安装时,一个组件未安装导致。后续追溯 解决方案: echo &quo…

豆粕期权 MVIX 指数构建及策略回测

1. VIX指数 VIX 最初被设计出来的目的是为了预警市场的潜在风险,一般来说,当 VIX 指数小于 15 时,表示市场出现非理性繁荣;当 VIX 指数大于 40 时,表示市场对 未来的非理性恐慌,短期内可以出现反弹。VIX 指…

【经验分享】openGauss 客户端(Data Studio / DBeaver)连接方式

前言 本篇介绍了openGauss常用的客户端连接工具Data Studio和DBeaver 01 客户端工具 openGauss部署之后,在服务器上提供了在命令行下运行的数据库连接工具gsql。此工具除了具备操作数据库的基本功能,还提供了若干高级特性,便于用户使用。…

HAProxy部署Web集群(Nginx)实验

实验前准备 HAProxy服务器:192.168.188.11 内核版本最好要在2.6以上,使用uname -r查看自己的内核版本是否适用 Nginx服务器1:192.168.188.12 Nginx服务器2:192.168.188.13 客户端:192.168.188.1(本机window…

最新报告!11月美国市场的“遥遥领先”来了,该爆的单总会来!

今年周期最长的大促节点已接近尾声,美区市场的11月份的商品销售战绩已全面来袭: 保健类目竟弯道超车,交出了将近翻倍的成绩单;美妆个护、女装与女士内衣等“她经济”类目持续高涨且“辣眼”单品不断;家居大类目下的市…

RocketMQ两主两从部署搭建

安装部署 1.1 部署环境 1.2 安装要求 建议使用64位操作系统,建议使用Linux / Unix / Mac; 64位JDK 1.8; Maven 3.2.x;(非必要) Git;(非必要) 1.3 获取rocketmq安装包,并解压 下载官…

基于Java SSM框架+Vue实现房屋租赁网站项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架Vue实现房屋租赁网站演示 摘要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,房屋租赁系统当然也不能排除在外。房屋租赁系统是以实际运用为开发背景&…

宝宝洗衣机买几公斤?高性价比婴儿专用洗衣机推荐

宝宝的抵抗力还比较弱,如果把大人的衣服跟宝宝的混洗,衣服上一旦沾上大人衣服上的细菌可能会导致宝宝生病再者,需要的清洗剂不一样,一般选择宝宝的洗衣液时会选择宝宝专用的低敏洗衣液,这样可以有效防止宝宝的皮肤过敏…

arcgis导出某个属性的栅格

选中栅格特定属性想要导出时,无法选中“所选图形” 【方法】spatial analyst 工具——提取分析——按属性提取

fiddler抓包安卓

一、打断点 1、安卓手机和电脑在同一局域网下,手机连接的网络开启手动代理,ip填写电脑ip,端口填写fiddler中配置的端口。 ip查看: 端口配置:tools-options-connections 2、安装证书,手机浏览器输入电脑ip…