数学建模优秀论文分析及免费资料分享(3)——2023 出血性脑卒中建模与分析

亮点:

数据处理
流程表述

  1. 方法分析
    1.1 问题解析
  • 问题 1:以血肿扩张事件作为目标变量进行建模,探索血肿扩张风险相关因素。包括判断患者样本发病后 48 小时内是否发生血肿扩张,以及构建模型预测所有患者发生血肿扩张的概率。
  • 问题 2:对血肿周围水肿的发生及进展进行建模,探索治疗干预和水肿进展的关联关系。包括构建水肿体积随时间进展曲线和计算残差,构建不同亚组的水肿体积曲线以探索个体差异影响,分析不同治疗方法对水肿体积进展模式的影响,以及分析血肿体积、水肿体积和治疗方法三者之间的关系。
  • 问题 3:建立出血性脑卒中患者的预后预测模型,探索该病预后关键因素。包括基于患者首次影像预测患者 90 天 mRS 评分,基于患者所有临床、治疗、首次影像和随访影像预测患者 90 天 mRS 评分,以及根据前两问的结果分析出血性脑卒中预后与多个因素的关联关系。
    1.2 内容分析
    本文针对患者的个人史、疾病史、治疗历史以及首次+随访的影像信息进行了合理的 量化分析,进行了缺失值和异常值的处理。也通过给出的数据集对患者是否发生血肿扩张 以及 90 天的 mRS 评分进行了预测,且分析了血肿体积、水肿体积和治疗方案三种之间的关系,并构建了相应的数学模型。本文综合利用了 CNN 卷积神经网络、灰色关联度分析、 主成分分析、K-means 三维聚类算法、BP 神经网络、斯皮尔曼相关性分析等方法进行了
    研究和预测。

针对问题一(a):判断 48 小时内是否发生血肿扩张事件,根据题目所给的判断血肿体 积前后变化方法来对原有数据进行归一化、标准化处理,去除了一些异常值,最终通过题 中所给血肿扩张条件进行判断得到前 100 位患者是否发生血肿扩张。

针对问题一(b),对特 征数据进行分类,使用灰色关联分析来获得与是否发生血肿扩张最具关联性的十五个特征 数据,使用 CNN 卷积神经网络根据阈值进行二分类预测,最终得到所有患者是否发生血 肿扩张的概率。并利用RMSE 和 MAE 进行模型评价指标,关于血肿扩张的发生以及血肿 扩张概率的最终结果为答案表中的列 C、列 D 和列 E 中。
(b)问要求构建模型预测所有患者发生血肿扩张的概率。考虑到有多个变量会对预测结果产生影响,为了更好分析影响因素,通过相关性 分析进行降维处理。而观察数据特征可以发现,数据分为离散型数据和连续性数据。为增 加模型的准确度,将特征分为离散型和连续性,其中离散型特征有 16 个,连续性数据 35 个,分别进行相关性分析。从两类中分别选取与血肿扩张相关性最强的 5 个离散型变量和 10 个连续性变量作为模型的输入,并考虑利用 CNN 卷积神经网络解决预测血肿扩张发生 的概率。

问题 2:对血肿周围水肿的发生及进展进行建模,探索治疗干预和水肿进展的关联关系。

针对问题二(a),将数据预处理后的水肿体积和时间点进行了曲线拟合,拟合出了一条 较为准确的曲线,用拟合曲线分别对前 100 个患者按照拟合优度,使用实际数据与拟合曲线计算残差;

针对问题二(b),将血压分为收缩压和舒张压,使用 PCA 主成分分析来对已有特征进行降维,最 终选定按照年龄和收缩压、舒张压作为特征变量,使用 K-means 三维聚类将 160 个患者分 为 5 类,并对前 100 个患者按照所述类别分别进行曲线拟合,最终得到 5 条拟合较好的曲 线。

针对问题二©,按照单位时间水肿体积变化,使用多元线性回归分析不同治疗方法对水肿进展模式的影响,并进行了如 R2 检测、SSE 等多个评价指标对拟合模型进行评价, 得到了较好的评价结果。针对问题二(d),将单位时间血肿体积变化、单位时间水肿体积变 化与治疗方法按照斯皮尔曼相关系数分析,通过热力图对三者之间的联系做了较为清晰的 比较。最终答案记录在答案表列 F、列 G 和列 H 中。
(d)问在(c)问的基础上,增加血肿体积这一关联
因素,要求分析血肿体积、水肿体积和治疗方法三者之间的关系。首先对表 1 和表 2 中的 数据进行整合,然后使用相关性分析研究血肿体积和水肿体积之间的关系,最后根据关联性分析的结果进行统计分析,探究三者之间的关系。

问题 3:建立出血性脑卒中患者的预后预测模型,探索该病预后关键因素。

针对问题三(a),,首先对数据进行预处理,从表 1 中提
取患者的个人史、疾病史和发病相关数据,从表 2 和表 3 中提取首次影像数据,对这些数据进行标准化与归一化处理。然后通过灰色关联分析对数据进行权重分析以识别关键特征。 最后使用 BP 神经网络进行训练和预测;

b)问要求基于患者所有临床、治疗、首次影像 和随访影像预测患者 90 天 mRS 评分;通过整合前 100 个患者的所有已知临床、治疗结果, 预测所有含随访影像检查的患者。则需要整合所有的表 1、表 2 和表 3 的特征变量,包括 患者个人史、治疗方法、疾病史、首次和随访的所有影像信息,并且对血肿/水肿体积在不同位置进行权值计算,统一进行统计分析。最后通过 BP 神经网络进行训练和预测 130 位 患者的 90 天 mRS 评分;(

c)问要求根据前两问的结果分析出血性脑卒中预后与多个因素的关联关系。考虑对所有特征变量进行灰色关联分析,通过对问题和实际诊疗的分析,并根据灰色关联度的大小来对临床的决策提出相关建议。
关键词:脑血肿与水肿分析预测、CNN 卷积神经网络;K-means 三维聚类;BP 神经

  1. 技术介绍
    2.1 数据预处理
    2.1.1 多个变量:箱线图检测异常值
    在这里插入图片描述

2.1.1.1 最小-最大归一化(Min-Max Scaling)
(1)归一化处理
针对表 1 中患者的年龄和表 3 中患者影像信息多种形状特征和灰度特征进行归一化处理,由于不同特征可能具有不同的数值范围和单位。例如,一个特征的取值范围在 0 到 1 之间,而另一个特征的取值范围在 0 到 1000 之间。如果不进行归一化处理,那么数值较 大的特征可能会在模型训练中占据主导地位,导致模型忽略了数值较小但重要的特征。
同时某些机器学习算法,如梯度下降,对输入数据的尺度非常敏感。特征尺度差异大 的数据可能需要更多的迭代才能收敛到最优解。考虑到需要通过机器学习预测患者血肿扩 张的概率,通过归一化处理,可以加快模型的收敛速度,减少训练时间。常见的数据归一 化方法包括最小-最大归一化和标准化。最小-最大归一化将数据缩放到指定的范围内,通 常是[0, 1]。
2.1.1.2 标准化
将数据转化为均值为 0,标准差为 1 的分布,使数据更符合正态分布。 故选择最小-最大归一化(Min-Max Scaling)
[图片]

线性函数将原始数据线性化的方法转换到[0 ,1]的范围, 计算结果为归一化后的数据,x 为原始数据,min(x)和 max(x)代表原始数据集中的最小和最大值。具体的归一化处理内容 如下。其中将患者血压分为舒张压和收缩压,并将其和年龄和发病到首次检查时间间隔一
并归一化处理,将表 1 患者首次检查的流水号以及表 3 共计 576 次检查的流水号进行匹配 处理,筛选出 160 名患者首次检查影像信息,并对其进行归一化处理。归一化处理后的表 格数据分别为 Sheet_1,Sheet_3,使得数据处于同一尺度。
2.1.1.3 离散数据分析
在机器学习中,在处理离散数据时,通常需要进行特征工程,将离散数据转换为适合 机器学习算法的特征表示形式。这可能包括独热编码、嵌入表示、特征哈希等技术,以确 保机器学习模型能够有效地处理这些数据。
而在针对于表 1 中患者个人史的性别数据,定义
[图片]

2.1.1.4 数据异常分析
异常的数据值往往会干扰我们对问题的分析过程,影响建立模型的准确度,从而导致 模型求解出的结果偏离实际情况,所以本文对表 1 和表 3 给出的信息进行了一定的异常值 判断和处理。通过比较高斯分布 3σ原则以及箱型图异常值处理,最终选择箱型图的处理结 果。
2.1.1.4.1 高斯分布 3σ原则
正态分布的概率密度函数图像是关于均值点处对称的,假设总体服从均值为 u,标准 差为σ的正态分布,那么从该总体中随机抽取一个样本点,该点落在区间[u-3σ,u+3σ]上的概 率约为 99.73%,而超出这个范围的可能性仅占不到 0.3%,是典型的小概率事件,所以这 些超出该范围的数据可以认为是异常值。为对数据进行可视化分析,选取 160 名患者首次 影像检查信息进行 3σ原则去除异常值处理,由于影像信息特征比较多,会占用大量篇幅。 所以本文选择了形状特征中的 LeastAxisLength 和 MajorAxisLength 以及灰度特征中的 Energy 和 90Percentil 进行了展示。
[图片]

对所有的特征进行了数据可视化后,由于影像特征可以发现通过 3σ原则处理后的部分 数据变化并不大,故各个特征并不都满于正态分布,所以考虑箱型图分析,如图 3-2 至 3-5为挑选的 4 个典型较为典型的特征变量的对比图。
[图片]

2.1.1.4.2 箱线图剔除异常值具体用法
箱线图是一种常用的统计图形,可以用来识别数据中的异常值。以下是使用箱线图去除异常值的步骤:
一、理解箱线图的组成
箱线图主要由以下几个部分组成:

  1. 中位数(Median):将数据从小到大排序后,位于中间位置的数值。如果数据个数为奇数,则中位数就是排序后的中间数;如果数据个数为偶数,则中位数是中间两个数的平均值。
  2. 上四分位数(Q3):将数据从小到大排序后,位于 75%位置的数值。
  3. 下四分位数(Q1):将数据从小到大排序后,位于 25%位置的数值。
  4. 箱线(Box):由上四分位数和下四分位数构成,箱内包含了数据的中间 50%。
  5. whiskers(须):从箱线的两端延伸出去,通常表示数据的合理范围。
  6. 异常值(Outliers):位于 whiskers 之外的数据点。

二、绘制箱线图

  1. 收集数据:首先需要收集你要分析的数据。
  2. 排序数据:将数据从小到大进行排序。
  3. 计算四分位数:确定数据的下四分位数(Q1)、中位数和上四分位数(Q3)。
  4. 绘制箱线图:根据计算得到的四分位数和数据的范围,绘制箱线图。可以使用统计软件(如 Excel、Python 的 matplotlib 库等)来绘制箱线图。

三、确定异常值的范围

  1. 计算 IQR(四分位距):IQR = Q3 - Q1。
  2. 确定异常值的范围:通常情况下,异常值被定义为小于 Q1 - 1.5×IQR 或大于 Q3 + 1.5×IQR 的数据点。

四、去除异常值

  1. 识别异常值:根据确定的异常值范围,在数据中识别出异常值。
  2. 去除异常值:可以选择直接删除异常值,或者根据具体情况对异常值进行修正。如果数据量较大,删除少量异常值对整体分析的影响可能较小。但如果数据量较小,删除异常值可能会对结果产生较大影响,此时可以考虑使用其他方法来处理异常值,如替换为中位数或均值等。
    例如,假设有以下一组数据:[10, 12, 15, 18, 20, 22, 25, 28, 30, 35, 100]。
  3. 首先对数据进行排序:[10, 12, 15, 18, 20, 22, 25, 28, 30, 35, 100]。
  4. 计算四分位数:
  • Q1 = 15。
  • 中位数 = 22。
  • Q3 = 28。
  1. 计算 IQR:IQR = Q3 - Q1 = 28 - 15 = 13。
  2. 确定异常值范围:Q1 - 1.5×IQR = 15 - 1.5×13 = -4.5;Q3 + 1.5×IQR = 28 + 1.5×13 = 47.5。
  3. 识别异常值:在这个数据集中,100 是异常值。
  4. 去除异常值:可以选择直接删除 100,或者根据具体情况进行修正。
    需要注意的是,去除异常值可能会对数据分析结果产生影响,因此在去除异常值之前,应该仔细考虑异常值的产生原因以及对分析结果的影响。同时,不同的领域和分析目的可能对异常值的处理方法有所不同。
    2.2 模型
    2.2.1 CNN(卷积神经网络)
  5. 具体内容:
  • CNN 主要由输入层、卷积层、池化层、全连接层及输出层组成。卷积层通过卷积核与输入数据进行卷积操作,提取局部特征。池化层用于降低特征图的维度,减少计算量。全连接层将提取的特征进行整合,输出最终结果。
  • 例如,在图像识别中,卷积层可以提取图像中的边缘、纹理等特征,池化层可以缩小图像尺寸,全连接层根据提取的特征判断图像属于哪个类别。
  1. 使用方法:
  • 首先确定问题类型,如图像分类、目标检测等。然后收集和预处理数据,设计 CNN 架构,包括确定卷积层、池化层、全连接层的数量和参数等。接着进行模型训练,使用优化算法调整模型参数,使其最小化损失函数。最后对模型进行评估和优化。
  1. 特点:
  • 具有局部连接和权值共享的特点,大大减少了参数数量,提高了计算效率。对平移、旋转、缩放等具有一定的不变性。
  1. 适用范围:
  • 主要适用于图像识别、语音识别、自然语言处理中的一些特定任务(如文本分类中的字符识别)等。
  1. 优缺点:
  • 优点:在处理图像等数据时表现出色,具有较高的准确率和泛化能力。能够自动学习特征,减少了人工特征提取的工作量。
  • 缺点:需要大量的数据进行训练,否则容易过拟合。训练过程计算量大,需要较高的计算资源。
  • 示例
    [图片]

2.2.2 K-means 三维聚类算法

  1. 具体内容:
  • K-means 是一种基于划分的聚类算法。首先随机选择 K 个初始聚类中心,然后将每个数据点分配到最近的聚类中心所在的簇中。重新计算每个簇的中心,重复这个过程,直到聚类中心不再变化或达到预设的迭代次数。
  • 在三维数据中,K-means 算法根据数据点在三个维度上的特征进行聚类。例如,对于一组三维空间中的点云数据,可以使用 K-means 算法将其分为不同的簇。
  1. 使用方法:
  • 确定聚类的数量 K。初始化 K 个聚类中心,可以随机选择或者根据一些先验知识确定。计算每个数据点到各个聚类中心的距离,将数据点分配到最近的簇中。更新每个簇的中心,重复上述步骤直到收敛。
  1. 特点:
  • 算法简单,易于实现。收敛速度较快,适用于大规模数据的聚类。
  1. 适用范围:
  • 适用于数值型数据的聚类,特别是在数据分布比较集中、簇的形状比较规则的情况下效果较好。可用于图像分割、客户细分、数据挖掘等领域。
  1. 优缺点:
  • 优点:算法简单高效,能够快速处理大规模数据。对初始聚类中心的选择不敏感,在一定程度上具有稳定性。
  • 缺点:需要预先确定聚类的数量 K,这在实际应用中可能比较困难。对异常值比较敏感,可能会影响聚类结果。容易陷入局部最优解。

2.2.3 BP 神经网络

  1. 具体内容:
  • BP 神经网络是一种前馈神经网络,由输入层、隐藏层和输出层组成。通过反向传播算法调整网络的权重和偏置,使得网络的输出尽可能地接近实际值。
  • 例如,在预测房价的问题中,输入层可以是房屋的面积、位置、楼层等特征,隐藏层对这些特征进行非线性变换,输出层输出预测的房价。
  1. 使用方法:
  • 确定网络的结构,包括输入层、隐藏层和输出层的节点数量。初始化网络的权重和偏置。将训练数据输入网络,计算网络的输出和误差。根据误差反向传播算法调整权重和偏置,重复这个过程直到误差达到预设的精度或达到最大迭代次数。
  1. 特点:
  • 具有很强的非线性映射能力,可以逼近任意复杂的函数。可以自动学习特征,不需要人工设计特征。
  1. 适用范围:
  • 适用于函数逼近、模式识别、预测等领域。可用于图像识别、语音识别、时间序列预测等问题。
  1. 优缺点:
  • 优点:具有很强的学习能力和泛化能力。可以处理非线性问题。
  • 缺点:训练过程比较复杂,需要大量的计算资源和时间。容易陷入局部最优解。对数据的质量和数量要求较高。
    2.2.4 多项式拟合
    示例
    [图片]

[图片]

[图片]

2.3 分析
2.3.1 主成分分析(PCA)

  1. 具体内容:
  • PCA 是一种降维方法,通过线性变换将原始数据投影到新的坐标系中,使得新坐标系的坐标轴(即主成分)尽可能地解释数据的方差。保留方差较大的主成分,舍弃方差较小的成分,从而实现降维。
  • 例如,对于一组高维的图像数据,可以使用 PCA 提取主要的特征,降低数据维度,方便后续的处理和分析。
  1. 使用方法:
  • 首先对原始数据进行标准化处理,使其均值为 0,方差为 1。然后计算数据的协方差矩阵,求解协方差矩阵的特征值和特征向量。根据特征值的大小选择主成分,将数据投影到主成分上,实现降维。
  1. 特点:
  • 能够有效地降低数据维度,去除数据中的冗余信息。主成分是相互正交的,便于数据分析和可视化。
  1. 适用范围:
  • 适用于高维数据的降维处理,如基因表达数据、图像数据、金融数据等。可用于数据可视化、特征提取、数据压缩等方面。
  1. 优缺点:
  • 优点:可以有效地降低数据维度,减少计算量和存储空间。能够揭示数据的内在结构和关系。
  • 缺点:可能会丢失一些有用的信息。对于非线性数据的处理效果不佳。
  • 示例:
    在这里插入图片描述
    在这里插入图片描述

2.3.2 斯皮尔曼相关性分析

  1. 具体内容:
    - 斯皮尔曼相关性分析是一种非参数的统计方法,用于衡量两个变量之间的相关性。它通过计算变量的秩次来确定相关性的大小,而不是直接使用变量的数值。
    - 例如,对于两个变量 X 和 Y,可以将它们的数值转换为秩次,然后计算秩次之间的相关性。如果两个变量的秩次变化趋势一致,则相关性较高;如果秩次变化趋势相反,则相关性较低。
  2. 使用方法:
    - 首先对两个变量的数据进行排序,得到它们的秩次。然后计算秩次之间的差值,根据差值计算相关性系数。相关性系数的取值范围在 -1 到 1 之间,绝对值越接近 1 表示相关性越强,0 表示无相关性。
  3. 特点:
    - 不受变量分布的影响,适用于各种类型的数据。对于异常值不敏感。
  4. 适用范围:
    - 适用于变量之间的相关性分析,特别是当变量不满足正态分布或存在异常值时。可用于心理学、社会学、生物学等领域的研究。
  5. 优缺点:
    - 优点:适用范围广,对数据的分布和异常值不敏感。计算简单,易于理解。
    - 缺点:只能衡量变量之间的线性相关性,对于非线性关系的检测能力有限。

2.3.3 RMSE(均方根误差)和 MAE(平均绝对误差)进行模型评价指标

  1. 具体内容:
    - RMSE 是均方根误差,是预测值与真实值之差的平方和的平均数的平方根。MAE 是平均绝对误差,是预测值与真实值之差的绝对值的平均数。
    - 例如,对于一组预测值和真实值,可以计算它们之间的差值,然后分别计算 RMSE 和 MAE。RMSE 和 MAE 越小,说明模型的预测效果越好。
  2. 使用方法:
    - 首先计算预测值与真实值之间的差值,然后根据公式计算 RMSE 和 MAE。RMSE 的计算公式为:,其中是样本数量,是真实值,是预测值。MAE 的计算公式为:。
  3. 特点:
    - RMSE 对大误差比较敏感,因为它是误差的平方和的平均数的平方根。MAE 对所有误差一视同仁,因为它是误差的绝对值的平均数。
  4. 适用范围:
    - 适用于各种预测模型的评价,如回归模型、时间序列预测模型等。可用于比较不同模型的预测效果。
  5. 优缺点:
    - 优点:计算简单,直观地反映了模型的预测误差。可以用于比较不同模型的性能。
    - 缺点:只考虑了预测值与真实值之间的误差,没有考虑模型的复杂性和解释性。对于异常值比较敏感。

2.3.4 灰色关联度分析

  1. 具体内容:
    - 灰色关联度分析是一种多因素统计分析方法,用于衡量两个系统或因素之间的相似程度。它通过计算参考序列和比较序列之间的关联系数和关联度,来确定它们之间的关系。
    - 例如,对于一个经济系统,可以将国内生产总值(GDP)作为参考序列,将各个产业的产值作为比较序列,通过灰色关联度分析来确定各个产业对 GDP 的贡献程度。
  2. 使用方法:
    - 首先确定参考序列和比较序列。对序列进行无量纲化处理,使其具有可比性。计算关联系数,关联系数的计算公式为:,其中是第个比较序列与参考序列在第个时刻的关联系数,是参考序列在第个时刻的值,是第个比较序列在第个时刻的值,是分辨系数,一般取。计算关联度,关联度是关联系数的平均数。
  3. 特点:
    - 对数据的要求较低,不需要大量的数据样本。可以处理不确定和不完全信息。
  4. 适用范围:
    - 适用于多因素分析、系统评价、决策分析等领域。可用于分析经济、环境、社会等系统中的因素之间的关系。
  5. 优缺点:
    - 优点:计算简单,对数据的要求低。可以处理不确定和不完全信息。
    - 缺点:结果的主观性较强,分辨系数的选择会影响结果。对于复杂系统的分析能力有限。
  6. 示例:
    定义特征序列,其中序列中的值已经进行了归一化处理。其中离散型特征为Xi,连续性数据为Xi`。

在这里插入图片描述

在这里插入图片描述

2.3.5 R2 检测

  1. 具体内容:
    - R2(决定系数)是衡量回归模型拟合优度的指标。它表示因变量的变异中可以被自变量解释的比例。
    - 例如,在一个线性回归模型中,R2 的值越接近 1,表示模型对数据的拟合越好;R2 的值越接近 0,表示模型对数据的拟合越差。
  2. 使用方法:
    - 首先建立回归模型,然后计算模型的预测值和真实值之间的误差。根据误差计算 R2,R2 的计算公式为:,其中是样本数量,是真实值,是预测值,是真实值的平均数。
  3. 特点:
    - R2 的取值范围在 0 到 1 之间,值越大表示模型的拟合优度越高。
  4. 适用范围:
    - 适用于回归模型的评价,可用于比较不同回归模型的拟合效果。
  5. 优缺点:
    - 优点:直观地反映了模型对数据的拟合程度。可以用于比较不同模型的性能。
    - 缺点:对于非线性模型的评价效果有限。可能会受到异常值的影响。

2.3.6 SSE(误差平方和)

  1. 具体内容:
    - SSE 是误差平方和,是预测值与真实值之差的平方和。它表示模型的预测误差的大小。
    - 例如,对于一组预测值和真实值,可以计算它们之间的差值,然后将差值的平方相加,得到 SSE。SSE 越小,说明模型的预测效果越好。
  2. 使用方法:
    - 首先计算预测值与真实值之间的差值,然后将差值的平方相加,得到 SSE。SSE 的计算公式为:,其中是样本数量,是真实值,是预测值。
  3. 特点:
    - SSE 对大误差比较敏感,因为它是误差的平方和。
  4. 适用范围:
    - 适用于各种预测模型的评价,如回归模型、时间序列预测模型等。可用于比较不同模型的预测效果。
  5. 优缺点:
    - 优点:计算简单,直观地反映了模型的预测误差。可以用于比较不同模型的性能。
    - 缺点:只考虑了预测值与真实值之间的误差,没有考虑模型的复杂性和解释性。对于异常值比较敏感。
  6. 亮点回顾(老师为什么给高分)
    自评
    6.1 模型的优点
    (1)本文针对于病人信息进行了合理而仿真的模型建立,将复杂的个人健康状况抽象 为易于处理的直观数据,如病人的年龄、性别、过往病史及影像检查信息等。这样的模型 能够节约大量的时间和人力成本,从而为后续的数据处理打下了良好的基础。
    (2)本文采用了离散化处理、归一化处理等多种处理方式,来进行数据分析和归纳。 一方面能够从多种角度更加科学地分析数据,确保结果更贴近现实;另一方面也弥补了数 据缺失等异常情况,确保分析结果的可靠性。
    (3)本文对于模型的建立上采取了规范化的数学分析,对于单一的患者,不仅从静态 度分析了患者的身体情况,而且从动态维度分析了患者在发病过程中的数据变化,还利 用了深度学习的方法进行科学的预测。
    (4)本文采用搭建多元线性回归模型的方式,利用多元回归模型分析模型的拟合系数, 从而对不同治疗方法对水肿体积变化的影响做出判断,以便于得出不同治疗方式在不同场 景下的治疗效果。
    (5)本文通过合理的建模和数据处理,基于灰色关联分析的方法,经过数据标准化、 建立灰色关联度矩阵、确定关联系数、排序和分析等步骤,筛选出关联度最高的特征变量。
    6.2. 模型的缺点
    本文的一切模型建立和数据分析,都是建立题目所给的的数据集基础上。虽然本次研 究的方法严格按照了规范,但由于数据对象样本较小,可能存在一定的偶尔性和偏差的缘故,最后的模型与实际应用场景还存在一定的差距。

客评:

  1. 主打的是评价与分析,非常专业
  2. 问题解决写的很清晰详细,很规范。作文完善,就像那种英语作文得分很高的类型。

免费资源获取

1.CSDN文章标题下方
在这里插入图片描述
2.csdn好像只有vip才能下载,虽然我并没设置。csdn获取麻烦的同学可以到b站up:啊我有兔子牙
工坊免费领取(自动发货需要0.01元),发货后会收到私信,资源在私信窗口打开即可。
在这里插入图片描述
在这里插入图片描述

  1. 代码
  2. 代码很简单,建议直接去文章里看
    #数据预处理 Matlab 代码

clc

clear all

[num,txt,raw] = xlsread(‘time.xlsx’);

[n,m]=size(raw);

a=ones(160,1);

for i=1:160

time_vecs=datevec(string(raw(i,2)));

start_date=datenum(time_vecs);

for j=3:14

hours=-100000;

if string(raw(i,j))==“NaT’”

break ;

else

time_vec = datevec(string(raw(i,j)));

serial_date = datenum(time_vec);

hours = (serial_date - start_date) * 24;%获得日期对应时
间做差值

end

if hours ~= -100000&&hours+num(i,1)<=48.00%提取 48 小时内水肿
体积数据

a(i)=j-1;

else

break;

end

end
end
a
#正态分布:
clc;
clear all;
[numm,txt,raw]=xlsread(‘归一化后的 160 个特征数据.xlsx’);
c=numm;
for k=2:32

b=numm(1:160,k)

b=b’;

aa=mean(b);

sig=std(b); %算出 x 的标准偏差。

m=zeros(1,length(b));

i=1;

for t=1:length(b)51

m(t)=abs(b(t)-aa);

if m(t)>3*sig

n(t)=aa;%异常值使用均值代替

num(i)=b(t);

i=i+1;

else

n(t)=b(t);

end

end

bb=0:1:length(n)-1;

subplot(2,1,1);

plot(bb,b)

title(‘原特征数据分布’)

subplot(2,1,2);

plot(bb,n);

c(1:100,k)=n(1:100);

title(‘拉依达准则均值处理异常点后特征数据分布’)

xlabel(‘特征索引’);

ylabel(‘特征数值’)
end
c
#箱型图:
clc
clear all
close all
[num,txt,raw] = xlsread(‘归一化后的 160 个特征数据.xlsx’);
x = num(1:160,2:32);
for i=1:31

y(i)=‘特征’+string(i);
end
figure
subplot(2,1,1)
boxplot(x, ‘Labels’, y,‘LabelOrientation’, ‘inline’)
subplot(2,1,2)
boxplot(x,‘Labels’,y,‘PlotStyle’,‘compact’)
x1=quantile(x,.25);
x3=quantile(x,.75);
x1;
x3;
a=zeros(160,32);
a(1:160,1)=num(1:160,1);
for i=1:160

for j=1:3152

if x(i,j)>x3(j)+1.5*(x3(j)-x1(j))||x(i,j)<x1(j)-1.5*(x3(j)
-x1(j))

a(i,j+1)=1;%标记异常点

else a(i,j+1)=0;

end

end
end
c=zeros(160,32);
c(1:160,1)=num(1:160,1);
for i=2:32

total=0.0;

sum=0.0;

for j=1:160

if a(j,i)==0

total=total+num(j,i);

sum=sum+1;

end

end

total=total/sum;

total

for j=1:160

if a(j,i)==1

c(j,i)=total;%异常值按均值替代

else

c(j,i)=num(j,i);

end

end
end

%CNN 神经网络 Matlab 代码

clc;clear;close all

[num,txt,raw] = xlsread(‘灰色关联前十五数据(第一题).xlsx’);

n=100;

train_x=num(1:80,1:15);

train_y=num(1:80,16);

test_x=num(81:100,1:15);

test_y=num(81:100,16);

train_x=train_x’;
train_y=train_y’;
test_x=test_x’;
test_y=test_y’;
%改
pre_x=num(1:160,1:15);53
pre_x=pre_x’;
%
method=@mapminmax;
% method=@mapstd;
[train_x,train_ps]=method(train_x);
test_x=method(‘apply’,test_x,train_ps);
%改
pre_x=method(‘apply’,pre_x,train_ps);
%
[train_y,output_ps]=method(train_y);
test_y=method(‘apply’,test_y,output_ps);
trainD=reshape(train_x,[15,1,1,80]);%训练集输入
testD=reshape(test_x,[15,1,1,20]);%测试集输入
%改
pre_x=reshape(pre_x,[15,1,1,160]);
%
targetD = train_y;%训练集输出
targetD_test = test_y;%测试集输出
layers = [

imageInputLayer([15 1 1]) %输入层参数设置

convolution2dLayer([3,1],16,‘Padding’,‘same’)%设置卷积核函数

reluLayer%relu 激活函数

maxPooling2dLayer([2 1],‘Stride’,2)

fullyConnectedLayer(384) %全连接层神经元

reluLayer%relu 激活函数

fullyConnectedLayer(384) %全连接层神经元

fullyConnectedLayer(1) % 输出层神经元

regressionLayer];%添加回归层
options = trainingOptions(‘adam’, …

‘MaxEpochs’,60, …

‘MiniBatchSize’,16, …

‘InitialLearnRate’,0.01, …

‘GradientThreshold’,1, …

‘Verbose’,false,…

‘Plots’,‘training-progress’,…

‘ValidationData’,{testD,targetD_test’});
% 训练
net = trainNetwork(trainD,targetD’,layers,options);
% 预测
YPred = predict(net,testD);
% 结果
YPred=double(YPred’);
% 反归一化54
predict_value=method(YPred,0,1);predict_value=double(predict_value)
;
true_value=method(targetD_test,0,1);true_value=double(true_value);
%预测所有
pre_y = predict(net,pre_x);
pre_y=double(pre_y’);
pv=method(pre_y,0,1);pv=double(pv);
%true_value=method(targetD_test,output_ps);true_value=double(true_
value);
pv=pv’;
pv
%
figure
plot(true_value,‘-*’,‘linewidth’,3)
hold on
plot(predict_value,‘-s’,‘linewidth’,3)
legend(‘实际值’,‘预测值’)
grid on

#BP 神经网络 Matlab 代码

clear

close all

clc

[num,txt,raw] = xlsread(‘特征数据.xlsx’);

input=num(1:130,1:17); %载入输入数据

output=num(1:130,18); %载入输出数据

input_train = input(1:80,:)';

output_train =output(1:80,:)‘;
input_test = input(1:130,:)’;
output_test =output(1:130,:)';训练预测数据
inputnum=2;
hiddennum=5;
outputnum=1; %节点个数
[inputn,inputps]=mapminmax(input_train);%归一化到[-1,1]之间,inputps
用来作下一次同样的归一化
[outputn,outputps]=mapminmax(output_train);
net=newff(inputn,outputn,hiddennum,{‘tansig’,‘purelin’},‘trainlm’);
% 模型建立
W1= net. iw{1, 1};
B1 = net.b{1};
W2 = net.lw{2,1};
B2 = net. b{2};各层阈值设置
net.trainParam.epochs=1000;55
net.trainParam.lr=0.01;
net.trainParam.goal=0.00001;
net=train(net,inputn,outputn);
inputn_test=mapminmax(‘apply’,input_test,inputps);%神经网络参数配置
an=sim(net,inputn_test);
test_simu=mapminmax(‘reverse’,an,outputps); %反归一化
for i=1:130

if test_simu(1,i)<=0.5

test_simu(1,i)=0;

else if test_simu(1,i)<=1.5

test_simu(1,i)=1;

else if test_simu(1,i)<=2.5

test_simu(1,i)=2;

else if test_simu(1,i)<=3.5

test_simu(1,i)=3;

else if test_simu(1,i)<=4.5

test_simu(1,i)=4

else if test_simu(1,i)<=5.5

test_simu(1,i)=5

else

test_simu(1,i)=6;

end

end

end

end

end

end
end%阈值计算
%test_simu
% test_simu=test_simu’;
error=test_simu-output_test;
%预测值和真实值的误差
figure(‘units’,‘normalized’,‘position’, [0.119,0.2,0.38,0.5];
plot(output_test,‘bo-’)
hold on
plot(test_simu,‘r*-’)
hold on
%plot(error,‘square’,‘MarkerFaceColor’,‘b’)
legend(‘期望值’,‘预测值’)
xlabel(‘验证集序号’)
ylim([0 7])
ylabel(‘患者 90 天 mRS 评分’)
title(‘BP 神经网络验证集的预测值与实际值对比图’)%画图56

#热力图 Matlab 代码

clc

clear all

[num,txt,raw] = xlsread(‘热力图数据.xlsx’);

%correlationmatrix=corrcoef(num);

labels={‘脑室引流’,‘止血治疗’,‘降颅压治疗’,‘降压治疗’,'镇静、镇痛治疗
',‘止吐护胃’,‘营养神经’,‘血肿体积变化’,‘水肿体积变化’

};

h=heatmap(labels,labels,num,‘Title’,‘表格型热力图相关系数矩阵’);

colormap(‘jet’)

#灰色关联分析 Matlab 代码

clc;clear;close all;

[num,txt,raw] = xlsread(‘72 个特征数据.xlsx’);

a=zeros(130,73);

a(1:130,1)=num(1:130,73);

a(1:130,2:73)=num(1:130,1:72);

data=a;

data1=mapminmax(data’,0,1);%标准化

data1=data1’;
data2=abs(data1(:,2:end)-data1(:,1));
d_max=max(max(data2));
d_min=min(min(data2));
%灰色关联矩阵
a=0.5;
%分辨系数
data3=(d_min+ad_max)./(data2+ad_max);
xishu=mean(data3);
yy=[1:72];
plot(yy,xishu);
set(gca,‘fontsize’,20);
xlabel(‘特征值序号’);
ylabel(‘灰色关联度’);
title(‘各特征值与患者 90 天 mRS 评分之间关联度’);
mark=zeros(1,72);
a1=0;
b1=0;
for i=1:20%获得关联性最强的前 20 个特征数据

a1=-1;

b1=0;

for j=1:72

if mark(1,j)==0&&xishu(1,j)>=a1

a1=xishu(1,j);

b1=j57

end

end

mark(1,b1)=1;
end
mark

#K-means 三维聚类 Matlab 代码

clc;

clear all;

[num,txt,raw] = xlsread(‘聚类 1.xlsx’);

x = num(1:160,1);

y = num(1:160,2);

z = num(1:160,3);

x=x’;

y=y’;
z=z’;
k = 5;
[resX resY resZ record] = Kmean3D(x,y,z,k);%聚类
for i = 1:length(record)

scatter3(resX(i,1:record(i)),resY(i,1:record(i)),resZ(i,1:rec
ord(i)),‘*’,‘LineWidth’,1);

hold on
end
xlabel(‘年龄’);
ylabel(‘收缩压/mmHg’);
zlabel(‘舒张压/mmHg’);
set(gca,‘FontSize’,18);

for i = 1:length(record)

scatter3(mean(resX(i,1:record(i)),2)‘,mean(resY(i,1:record(i))
,2)’,mean(resZ(i,1:record(i)),2)‘,‘Marker’,‘square’,‘MarkerEdgeColor’,‘k’,’
MarkerFaceColor’,‘k’)

end
2.
3. legend(‘聚类 1’,‘聚类 2’,‘聚类 3’,‘聚类 4’,‘聚类 5’,‘聚类中心点’)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值