R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化

本文主要是介绍R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近我们被客户要求撰写关于心脏病的研究报告,包括一些图形和统计输出。

简介

世界卫生组织估计全世界每年有 1200 万人死于心脏病。在美国和其他发达国家,一半的死亡是由于心血管疾病。心血管疾病的早期预后可以帮助决定改变高危患者的生活方式,从而减少并发症。本研究旨在查明心脏病最相关/风险因素,并使用机器学习预测总体风险。

相关视频:R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险

逻辑回归Logistic模型原理和R语言分类预测冠心病风险实例

,时长06:48

【视频】支持向量机SVM、支持向量回归SVR和R语言网格搜索超参数优化实例

支持向量机SVM、支持向量回归SVR和R语言网格搜索超参数优化实例

,时长07:24

 视频:从决策树到随机森林:R语言信用卡违约分析信贷数据实例

从决策树到随机森林:R语言信用卡违约分析信贷数据实例

,时长10:11


 

数据准备 

来源

该数据集来自对居民正在进行的心血管研究。分类目标是预测患者未来是否有 10 年患冠心病 (CHD) 的风险。数据集提供了患者的信息。它包括超过 4,000 条记录和 15 个属性。

变量

每个属性都是一个潜在的风险因素。有人口、行为和医疗风险因素。

 人口统计:
• 性别:男性或女性(标量)
• 年龄:患者年龄;(连续 - 尽管记录的年龄已被截断为整数,但年龄的概念是连续的)
行为
• 当前吸烟者:患者是否是当前吸烟者(标量)
• 每天吸烟数:此人一天内平均吸烟的香烟数量。(可以认为是连续的,因为一个人可以拥有任意数量的香烟,甚至半支香烟。)
• BP Meds:患者是否服用降压药(标量)
•中风:患者之前是否有中风(标量)
•  Hyp:患者是否患有高血压(标量)
• 糖尿病:患者是否患有糖尿病(标量)
• Tot Chol:总胆固醇水平(连续)
• Sys BP:收缩压(连续)
• Dia BP:舒张压(连续)
• BMI:体重指数(连续)
• 心率:心率(连续 - 在医学研究中,心率等变量虽然实际上是离散的,但由于存在大量可能值而被认为是连续的。)
• 葡萄糖:葡萄糖水平(连续)
预测变量(预期目标)
• 10 年患冠心病 CHD 的风险(二进制:“1”表示“是”,“0”表示“否”)

心脏病预测

# 获取数据
rdaa <- read.csv(路径)

# 这边可以考虑增加变量收缩压与舒张压之差、描述收缩压、舒张压与高血压等级的变量# 看数据结构
str(ata)

# 考虑增加变量bplevel
raw_data <- sqldf# 对变量类别进行区分ra_da <- map
str(ra_da )

数据预处理

查看和处理缺失值

# 这里我们使用mice包进行缺失值处理
aggr

matplot

由上图可以看出,除了glucose变量,其它变量的缺失比例都低于5%,而glucose变量缺失率超过了10%。对此的处理策略是保留glucose变量的缺失值,直接删除其它变量的缺失值。 现在处理glucose的缺失值,

# 处理glucose列
lee_a <- subset & !is.na & !is.na & !is.na & !is.na & !is.na
# 查看glce与其它变量的线性相关性确定mice的填充策略
gcog = glm(lcse ~ .)
smry(glseg)

 

填充,排除不重要的变量。至于为什么不选diaBP,主要是后面的相关性分析中,这两个变量会造成多重共线性。
 

mice%in%  m=5,  "pmm", mai = 50, sd=2333, pint= FALSE)
#查看填充结果
smr(mc_od)

# 查看原始数据和插补后的数据分布情况
epot(mi_md)

sipt(mcod, pch=12)

# 填充数据
mi_t <- complete
fir_aa$loe <- miout$guose
sum(is.na(flda))

删除重复行

# 查看有无重复行并删除重复行
sum(duplicated

comd_ata <- comdta[!duplicated(), ]

查看离群点

#查看异常值
gplot(coedta)+geom_boxplot(ae(ftr(1),age))

ggplot(copd_dta)+geom_boxplot(aes(factor(1cigDy))

ggplot(coea)+geom_boxplot(aes(factor(1),ttl))

ggplot(colt_ta)+geom_boxplot(aes(factor(1),syBP))

ggplot(comeaa)+geom_boxplot(aes(factor(1),daP))

ggplot()+gem_boxplot(aes(factor(1),BMI))

# 查看cigsPerDay
cigs_sub <- comled_dta
# 查看totChol,删除异常点
# 查看sysBP, 删除异常点
# 查看BMI

totChol: 总胆固醇水平大于240mg/dl已属于非常高,故删去水平值为600mg/dl的记录。 sysBP: 去掉收缩压为295mg/dl的记录

# 删除各变量离群点
competedata 

# 分类型变量列联分析
ggplot+geom_boxplot

ggplot+geom_boxplot(aes,totChol,fill=TenYerCHD))

cometddata %>% fitr %>% 
ggplot

由图像知,glucose和hearRate变量有不显着的风险

table1=table
chisq.test

table1

table2=table
chisq.test

table3=table
chisq.test

chisq.test

ggpairs

diaBP和sysBP有多重共线性的问题。 

currentSmoker变量可能不显着,下面进入模型部分。

模型

# 划分数据集split = sample.splittrain = subset

逻辑回归

# 逻辑回归模型 - 使用所有变量
fultaog = glm
summary(fulog)

 

fldaog = glm
summary(fuatLg)

prdts = predict
glm_le <- table

ACCU

随机森林

rfoel <- randomForest
# 获得重要性
imprace

# 选择重要的因素
rfmdel <- randomForest
# 误差
plot


# 获取重要性
ggplot +geom_bargeom_text

这里有患病风险的误差不降反升,需要探究其中原因

# 绘制分类图像
pred<-predict
pdou_1<-predict  #输出概率
table <- table
sum(diag/sum #预测准确率

plot(margin

SVM支持向量机

# 先进行模型调优
tud <- tune.svm
summary(tud )

# 使用turning函数得到最佳参数设置支持向量机
mel.nd <- svm
cost=tuned$
summary(modted)

# 调用predict函数基于刚配置好的SVM模型进行类标号的预测:
sm.ne.ed <- predict
sv.tuedtble <- table
sm.ue.tbe

acy.s.vm <- sum(diag)/sum

模型诊断

根据上面三个模型的结果,可以看出预测结果的类别数量分布非常不均衡

sum

sum(TeYaHD == 0)

针对这一现象,需要采取方法平衡数据集。


这篇关于R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/258427

相关文章

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

基于Python打造一个可视化FTP服务器

《基于Python打造一个可视化FTP服务器》在日常办公和团队协作中,文件共享是一个不可或缺的需求,所以本文将使用Python+Tkinter+pyftpdlib开发一款可视化FTP服务器,有需要的小... 目录1. 概述2. 功能介绍3. 如何使用4. 代码解析5. 运行效果6.相关源码7. 总结与展望1

SpringKafka消息发布之KafkaTemplate与事务支持功能

《SpringKafka消息发布之KafkaTemplate与事务支持功能》通过本文介绍的基本用法、序列化选项、事务支持、错误处理和性能优化技术,开发者可以构建高效可靠的Kafka消息发布系统,事务支... 目录引言一、KafkaTemplate基础二、消息序列化三、事务支持机制四、错误处理与重试五、性能优

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换