首页 > 其他分享 >数据分享|逻辑回归、随机森林、SVM支持向量机预测心脏病风险数据和模型诊断可视化|附代码数据

数据分享|逻辑回归、随机森林、SVM支持向量机预测心脏病风险数据和模型诊断可视化|附代码数据

时间:2024-07-17 20:29:59浏览次数:17  
标签:语言 SVM 预测 回归 可视化 数据 模型 决策树

原文链接:http://tecdat.cn/?p=24973

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

世界卫生组织估计全世界每年有 1200 万人死于心脏病。在美国和其他发达国家,一半的死亡是由于心血管疾病

简介

心血管疾病的早期预后可以帮助决定改变高危患者的生活方式,从而减少并发症。本研究旨在查明心脏病最相关/风险因素,并使用机器学习预测总体风险。

数据准备 

来源

该数据集  查看文末了解数据获取方式  来自对居民正在进行的心血管研究。分类目标是预测患者未来是否有 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

图片


点击标题查阅往期内容

图片

R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病

图片

左右滑动查看更多

图片

01

图片

02

图片

03

图片

04

图片

由上图可以看出,除了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.split

train = subset

逻辑回归

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

图片

图片

   
fldaog = glm
summary(fuatLg)

图片

   
prdts = predict
glm_le <- table
   
ACCU

图片

随机森林

   
rfoel <- randomForest
# 获得重要性
imprace

图片

相关视频:Boosting原理与R语言提升回归树BRT预测短鳍鳗分布

**

拓端数据部落

,赞6

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

图片

   
# 获取重要性
ggplot +
   geom_bar
   geom_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心脏病风险和模型诊断可视化》 ,点击“阅读原文”获取全文完整资料。


点击标题查阅往期内容

高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数分类回归决策树交互式修剪和更美观地可视化分析细胞图像分割数据集
实现广义相加模型GAM和普通最小二乘(OLS)回归
贝叶斯线性回归和多元线性回归构建工资预测模型
Python支持向量回归SVR拟合、预测回归数据和可视化准确性检查实例
逻辑回归(对数几率回归,Logistic)分析研究生录取数据实例
广义线性模型glm泊松回归的lasso、弹性网络分类预测学生考试成绩数据和交叉验证
非线性回归nls探索分析河流阶段性流量数据和评级曲线、流量预测可视化
特征选择方法——最佳子集回归、逐步回归
线性回归和时间序列分析北京房价影响因素可视化案例
贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析免疫球蛋白、前列腺癌数据
用加性多元线性回归、随机森林、弹性网络模型预测鲍鱼年龄和可视化
PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯和KMEANS聚类用户画像
PYTHON集成机器学习:用ADABOOST、决策树、逻辑回归集成模型分类和回归和网格搜索超参数优化
R语言集成模型:提升树boosting、随机森林、约束最小二乘法加权平均模型融合分析时间序列数据
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析
R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化
R语言基于树的方法:决策树,随机森林,Bagging,增强树
R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测
spss modeler用决策树神经网络预测ST的股票
R语言中使用线性模型、回归决策树自动组合特征因子水平
R语言中自编基尼系数的CART回归决策树的实现
R语言用rle,svm和rpart决策树进行时间序列预测
python在Scikit-learn中用决策树和随机森林预测NBA获胜者
python中使用scikit-learn和pandas决策树进行iris鸢尾花数据分类建模和交叉验证
R语言里的非线性模型:多项式回归、局部样条、平滑样条、 广义相加模型GAM分析
R语言用标准最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类
R语言ISLR工资数据进行多项式回归和样条回归分析
R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型
R语言用泊松Poisson回归、GAM样条曲线模型预测骑自行车者的数量
R语言分位数回归、GAM样条曲线、指数平滑和SARIMA对电力负荷时间序列预测R语言样条曲线、决策树、Adaboost、梯度提升(GBM)算法进行回归、分类和动态可视化
如何用R语言在机器学习中建立集成模型?
R语言ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测在python 深度学习Keras中计算神经网络集成模型R语言ARIMA集成模型预测时间序列分析R语言基于Bagging分类的逻辑回归(Logistic Regression)、决策树、森林分析心脏病患者
R语言基于树的方法:决策树,随机森林,Bagging,增强树
R语言基于Bootstrap的线性回归预测置信区间估计方法
R语言使用bootstrap和增量法计算广义线性模型(GLM)预测置信区间
R语言样条曲线、决策树、Adaboost、梯度提升(GBM)算法进行回归、分类和动态可视化
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析
R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据和可视化分析
R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化
Matlab建立SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线
matlab使用分位数随机森林(QRF)回归树检测异常值

标签:语言,SVM,预测,回归,可视化,数据,模型,决策树
From: https://www.cnblogs.com/tecdat/p/18308226

相关文章

  • 17-2 向量数据库之野望2 - 基础宝典
    介绍矢量数据库是一项技术,已成为不断变化的数据管理领域的重大变革者。凭借其无与伦比的速度和效率,这些尖端数据库正在彻底改变数据检索的规范。我们将在这次深入研究中探索矢量数据库的细微差别,理解其基本概念,并提供代码示例来展示其革命性的能力。传统关系型数据库难以满足......
  • 大语言模型(Large Language Models, LLMs)是否需要进行数据校正
    大语言模型(LargeLanguageModels,LLMs),如GPT-3,并不总是免于数据校正的过程。实际上,即使是这些大语言模型,在数据预处理中也会涉及到一定的处理和调整。以下是为什么大语言模型在某些情况下不需要明显的批效应校正,同时在某些情况下仍然需要数据校正的原因:为什么大语言模型不需要显......
  • 数据结构 day2
    目录思维导图:学习内容:1. 共用体1.1引入目的1.2 定义及初始化1.2.1 概念1.2.2定义格式1.2.3初始化1.2.4变量的大小例子:2. 类型重定义2.1使用方法2.2使用方式(也可以连续定义)2.2.1类型重定义2.2.2  使用方式3.#define与typedef的区别例如:4. ......
  • 常见的SQL数值型数据处理函数
    在数据驱动的时代,SQL已成为数据分析和管理中不可或缺的工具。无论是处理简单的查询还是复杂的数据分析,SQL都能帮助我们高效地完成任务。然而,在处理数值型数据时,你是否感到过困惑,不知道如何运用SQL中的各种函数来实现数据处理? 究竟有哪些常见的SQL数值型数据处理函数,它......
  • 数据的运算(上)
    逻辑门电路多路选择器和三态门加法器一位全加器并行进位加法器......
  • 学生成绩预测与分析可视化平台
    一.创作思路在平时办公中,我们往往需要对数据进行各种数据分析与图形可视化成图表,这些操作我们可以采用wps,word等等办公软件,于是我想自己尝试写一个线上的平台,专门实现上传文件,勾选相应的数据,采用Echarts生成图表,将Echars图表生成图表的全部步骤让用户自行选择生成图表,用户可......
  • Python文件与数据处理:掌握I/O操作与序列化的艺术
    在Python编程的世界里,文件操作和数据序列化犹如画家手中的画笔和调色板,是构建强大应用程序不可或缺的工具。本文将深入探讨open()函数的巧妙使用、JSON和pickle模块的序列化魔法,以及os模块在文件系统操作中的关键角色。让我们一同揭开Python文件与数据处理的神秘面纱,掌握I/O操......
  • 知识图谱与LLMs:实时图分析(通过其关系的上下文理解数据点)
    大型语言模型(LLM)极大地改变了普通人获取数据的方式。不到一年前,访问公司数据需要具备技术技能,包括熟练掌握各种仪表板工具,甚至深入研究数据库查询语言的复杂性。然而,随着ChatGPT等LLM的兴起,随着所谓的检索增强型LLM应用程序的兴起,隐藏在私人数据库中或可通过各种AP......
  • C语言数据类型
    1.整型数据整型数据的分类:int:这是最常见的整型类型,通常在大多数系统中占用4个字节(32位),表示的范围大致是 -2147483648 到 2147483647 。shortint(或者简称为 short):占用的存储空间通常比 int 少,一般为2个字节(16位),表示的范围相对较小。longint(或者简称为 long):通......
  • mysql数据库常用命令
    mysql数据库创建表的内容需要声明数据类型,数据类型分为整数Int、浮点数也就是小数、字符串、日期时间data。如id的话需要用整数int,商品价格的话用浮点数,名字用字符串varchar(30)括号里面是字符串的长度。常用命令:1、声明要使用的数据库use名称;2、创建表createtabletest(......