数学建模-基于BL回归模型和决策树模型对早产危险因素的探究和预测

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

  近年来,全球早产率总体呈上升趋势,在我国,早产儿以每年 20 万的数目逐年递增,目前早产已经成为重大的公共卫生问题之一。据研究,早产是威胁胎儿及新生儿健康的重要因素,可能会造成死亡或智力体力缺陷,因此研究早产的影响因素,建立预测早产的模型就显得极为重要。我们以问卷、面对面访谈的方式,收录了湖南省妇幼保健院 2013 年 5 月 13 日-2019 年 12 月 31 日妊娠 8-14周且接受首次产前护理的孕妇,共 18527 份样本,调查研究孕妇包括医学和社会学信息在内的 104 个变量。基于大样本、多变量的数据特征,对数据预处理后,首先基于传统的统计方法,依次通过 SMOTE 过采样均衡数据、x2 相似性检验剔除无关变量、二阶聚类(TwoStep Cluster)实现降维,用 Binary Logistic 建立早产预测模型,并通过 AUC-ROC 曲线对早产预测模型进行准确性检验;在此基础上,进一步探讨并合理利用机器学习的效力,用数据挖掘的方法,依次通过随机欠抽样平衡样本,特征选择变量实现变量降维,分别用决策树 C5.0 算法,推理集 C5.0算法,决策树 CHAID 算法建立早产预测模型,并通过 boosting 技术提高模型稳健性。
  根据二阶聚类降维结果、Binary Logistic 建立的早产预测模型及检验结果,发现城乡分组、人均月收入、母亲孕前 BMI 分组、受精方式、受孕方式、孕次分组、孕早期柯萨奇病毒、孕前既往性病史、是否采用剖宫产、配偶 BMI 分组这 10 个变量与是否早产的相关性较强,且在经过哑变量处理后,适用于建立早产预测模型。通过 AUC-ROC 曲线,检验出该早产预测模型拟合度良好。在初步探索之后,进一步深入利用机器学习,即分别使用决策树 C5.0 算法,推理集 C5.0 算法,决策树 CHAID 算法建立三个早产预测模型。其中通过决策树 C5.0 算法建立的早产预测模型,在测试集上的准确性为 93.78%,平均正确性为 0.859、平均不正确性为 0.692;推理集 C5.0 算法的准确性为 95.92%,平均正确性为 0.824、平均不正确性为0.714;决策树 CHAID 算法建立的早产预测模型,在测试集上的准确性为79.58%,取置信度为 0.812。

数据预处理

  (一)变量预处理
  类别化处理及选择:将品质变量整理成 0-1 型数值变量,如民族;对于连续变量和其他可合并的变量进行整合,这样会得到有重复信息的变量,比如配偶BMI 值和配偶 BMI 值分组,受孕方式和受孕方式两分类。不做特别说明的情况下,本次研究将主要使用分类型变量,且选择使用分类型变量中分组较少的那一个,比如刚刚提到两组变量,均选择后一组变量进入样本。这是因为在本次研究中,分类型变量占绝大多数,而相同的数据类型有更方便建模的处理,投入到未来实际预测操作中也更加简单明了。
  (二)样本处理
  类别不平衡(class-imbalance):指分类任务中不同类别的训练样例数目差别很大的情况。在分类学习中方法,默认不同类别的训练样例数目基本相当。若样本类别数目差别很大,属于极端不均衡,会对学习过程(模型训练)造成困扰。这些学习算法的设计背后隐含的优化目标是数据集上的分类准确度,而这会导致学习算法在不平衡数据上更偏向于含更多样本的多数类。多数不平衡学习(imbalance learning)算法就是为解决这种“对多数类的偏好”而提出的。据实践经验表明,正负类样本类别不平衡比例超过 4:1 时,分类要求会因为数据不平衡而无法得到满足,分类器处理结果将变差,导致预测效果达不到预期要求。在本次研究项目中,早产 0:1 比约为 5:1(0 为不发生,1 为发生。本论文其他部分未做其他说明时,都按照该标签规则),因此在构建模型之前,需要对该分类不均衡性问题进行处理。

二阶聚类

  实现步骤
  步骤 1、建立树根 clusterfeature,树根在一开始每个节点中会放置一个数据集中的第一个记录,它就包含有这个数据存储集中每个变量的信息。相似性用的是距离数值测量,数据的相似性可以作为进行距离数值测量的主要标准。相似度高的变量位于同一节点,同时,相似度低的变量生成新节点。似然归类测度模型假设每个变量必须服从特定的概率分布,聚类模型要求分类型独立变量必须服从多项式概率分布,数值型独立变量必须服从正态概率分布。
  步骤 2、合并聚类算法。生成的聚类方案具有不同聚类数,不同的聚类数是基于合并聚类算法下节点的组合成果。
  步骤 3、选择最优聚类数。通过 BIC:Bayesian Information Criterion 准则对各聚类情况进行比较,选出最优聚类方案。
  数值说明
  ①对数似然:这种度量方式用于研究某种以确定概率分布的独立变量。其中数值型变量服从正态分布,分类型变量服从多项式分布。
  ②Bayesian 信息准则( BIC):在只有部分信息时,要预测未知状态下的部分信息值,选用主观概率;修正发生概率时采用贝叶斯公式,将得到的修正概率与预期产出的值结合计算出最优决策。
  计算公式:
                BIC=ln(n)k–2ln(L)
  其中:k 为模型参数个数;n 为样本数量;L 为似然函数
  聚类结果
  二阶聚类适用于多分类变量的降维问题。显然,本次研究数据可选用 SPSS 中的二阶聚类对变量进行降维,聚类效果为良好,并最终由 77 个自变量降维到 14个主要变量(该 14 个变量重要性都为 1)
在这里插入图片描述

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

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

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

程序代码:(代码和文档not free)

from imblearn.over_sampling import SMOTE
import numpy as np
from sklearn.model_selection import train_test_split
data = pd.read_excel('1(2).xlsx') #读取数据集
data = data.dropna(axis = 1, how = 'any') # 丢弃有 NAN 的列
data = data.dropna(axis = 0, how = 'any') # 丢弃有 NAN 的行
data = data.drop(columns=['ID', '调查人署名']) # 丢弃 ID 和调查人属名,这两
个非 float,放在这里是无效的
var = data.columns
Y = data.iloc[:,-1] # 获得因变量数据
X = data.iloc[:,:-1] # 获得自变量数据
oversampler=SMOTE(random_state=2021) # 导入过采样库—SMOTE 算法
# x_train, x_valid_test, y_train, y_valid_test = 
train_test_split(X,Y,test_size=0.3,random_state=2020) # 将数据集切分为 训练集和
验证+测试集
x_train,y_train=oversampler.fit_sample(X,Y) # 对训练集进行 SMOTE 过采样,
得到过采样后的自变量和因变量
# 
x_valid,x_test,y_valid,y_test=train_test_split(x_valid_test,y_valid_test,test_size=0.3,r
andom_state=2020)
data_smote = pd.concat([x_train,y_train],axis = 1)
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

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

相关文章

深度学习 -- 神经网络

1、神经网络的历史 2、 M-P模型 M-P模型是首个通过模仿神经元而形成的模型。在M-P模型中,多个输入节点对应一个输出节点y。每个输入x,乘以相应的连接权重w,然后相加得到输出y。结果之和如果大于阈值h,则输出1,否则输出0。输入和输出均是0或1。 公式2.1: …

Redis 安装部署

文章目录 1、前言2、安装部署2.1、单机模式2.1.1、通过 yum 安装(不推荐,版本老旧)2.1.1、通过源码编译安装(推荐) 2.2、主从模式2.3、哨兵模式2.4、集群模式2.5、其他命令2.6、其他操作系统 3、使用3.1、Java 代码 —…

神经网络中的 Grad-CAM 热图(Gradient-weighted Class Activation Mapping)

Grad-CAM(Gradient-weighted Class Activation Mapping)是一种用于可视化卷积神经网络(CNN)中特定类别的激活区域的方法。其基本思想是使用网络的梯度信息来获取关于特定类别的空间定位信息。 Grad-CAM 的具体公式如下&#xff1…

Python逐步打造惊艳的折线图

大家好,Matplotlib可以快速轻松地使用现成的函数绘制图表,但是微调步骤需要花费更多精力。今天本文将介绍如何使用Matplotlib绘制吸引人的图表,实现折线图的惊艳变身。 1.数据 为了说明方法,本文使用了包含过去50年各国GDP信息的…

QT 中 QTimer 类 备查

基础 // 指定了父对象, 创建的堆内存可以自动析构 QTimer::QTimer(QObject *parent nullptr);// 根据指定的时间间隔启动或者重启定时器, 需要调用 setInterval() 设置时间间隔 void QTimer::start();// 启动或重新启动定时器,超时间隔为msec毫秒。 void QTimer::…

韩语语法中에和로/으로区别,柯桥发音入门韩语培训学校

에和로/으로在行动的去向与到达或涉及的地点一致时,二者可以互换。 但是에表示到达或涉及的具体地点,而로/으로表示的时动作指向的方向或经过的地点。 在只表示去向而不表示具体地点时,只能用로/으로,而在只表示具体地点而不表示方…

2023.12.2 做一个后台管理网页(左侧边栏实现手风琴和隐藏/出现效果)

2023.12.2 做一个后台管理网页(左侧边栏实现手风琴和隐藏/出现效果) 网页源码见附件,比较简单,之前用很多种方法实现过该效果,这次的效果相对更好。 实现功能: (1)实现左侧边栏的手…

摩根士丹利:人工智能推动增长

摩根士丹利(NYSE:MS)将人工智能战略整合到其财富管理业务中,标志着竞争性金融格局迈出了变革性的一步。该公司的人工智能计划,包括与 OpenAI 合作开发人工智能聊天机器人,促进了其财富部门的显着增长。值得…

【数据库】数据库基于封锁机制的调度器,使冲突可串行化,保障事务和调度一致性

封锁使可串行化 ​专栏内容: 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。 本专栏会定期更…

Linux查看计算机处理器相关的信息

采用命令lscpu。部分结果如下:

MicroPython标准库

MicroPython标准库 arraybinascii(二进制/ASCII转换)builtins – 内置函数和异常cmath – 复数的数学函数collections – 集合和容器类型errno – 系统错误代码gc – 控制垃圾收集器hashlib – 散列算法heapq – 堆队列算法io – 输入/输出流json – JSON 编码和解码math – 数…

详解Spring中BeanPostProcessor在Spring工厂和Aop发挥的作用

😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783…

【开源】基于Vue+SpringBoot的音乐平台

项目编号: S 055 ,文末获取源码。 \color{red}{项目编号:S055,文末获取源码。} 项目编号:S055,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示 四、核心代码4.1 查询单首…

Vue安装及环境配置详细教程

一、下载node.js 访问node.js官网:Download | Node.js 选择Windows Installer (.msi)的64-bit进行下载。 在E盘新建一个文件夹,取名为nodejs,也可以在其他盘符新建。 在安装node.js时,点击Change...,进行切换盘符安…

使用 STM32 微控制器读取光电传感器数据的实现方法

本文介绍了如何使用 STM32 微控制器读取光电传感器数据的实现方法。通过配置和使用STM32的GPIO和ADC功能,可以实时读取光电传感器的模拟信号并进行数字化处理。本文将介绍硬件连接和配置,以及示例代码,帮助开发者完成光电传感器数据的读取。 …

<JavaEE> 什么是线程安全?产生线程不安全的原因和处理方式

目录 一、线程安全的概念 二、线程不安全经典示例 三、线程不安全的原因和处理方式 3.1 线程的随机调度和抢占式执行 3.2 修改共享数据 3.3 关键代码或指令不是“原子”的 3.4 内存可见性和指令重排序 四、Java标准库自带的线程安全类 一、线程安全的概念 线程安全是指…

无人机助力电力设备螺母缺销智能检测识别,python基于YOLOv7开发构建电力设备螺母缺销小目标检测识别系统

传统作业场景下电力设备的运维和维护都是人工来完成的,随着现代技术科技手段的不断发展,基于无人机航拍飞行的自动智能化电力设备问题检测成为了一种可行的手段,本文的核心内容就是基于YOLOv7来开发构建电力设备螺母缺销检测识别系统&#xf…

spark的安装与使用:一键自动安装

使用shell脚本一键下载、安装、配置spark(单机版) 1. 把下面的脚本复制保存为/tmp/install_spark.sh文件 #!/bin/bash# sprak安装版本 sprak_version"2.4.0" # sprak安装目录 sprak_installDir"/opt/module" # hadoop安装路径&…

【数组和函数实战: 斗地主游戏】

目录 1. 玩法说明 2. 分析和设计 3. 代码实现 4. 游戏演示1. 玩法说明 一副54张牌,3最小,两个王最大,其实是2,和上面一样从大到小排列 2. 分析和设计 2.1 分析和设计 常量和变量设计 一副牌有54张,有牌的数值和花色,可以分别用两个数组来存储,card为卡牌表示的数值,color为…

Java数据结构之《希尔排序》题目

一、前言: 这是怀化学院的:Java数据结构中的一道难度中等的一道编程题(此方法为博主自己研究,问题基本解决,若有bug欢迎下方评论提出意见,我会第一时间改进代码,谢谢!) 后面其他编程题只要我写完…