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

时间:2024-01-10 01:05:57 标签:  支持向量机  逻辑回归  随机森林  机器学习  人工智能  

原文链接: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)

1ff728285382af64a4ddc42a86a0f2a5.png

# 考虑增加变量bplevel
raw_data <- sqldf

# 对变量类别进行区分

ra_da <- map
str(ra_da )

91a7057fc9de546008ae2e9e9d36fda6.png

数据预处理

查看和处理缺失值

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

d818feb5fb688e36ad99a40427e9fbda.jpeg

matplot

00efb452e39bc1dfd6fa9a32515f7fe4.png


点击标题查阅往期内容

f0ebb947c671606dd8dba732950a483e.jpeg

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

outside_default.png

左右滑动查看更多

outside_default.png

01

92dcb57c12e25fed5c06ed71e8cd70ea.png

02

5b7d16f1a6e9dc208f6020880e6b9ac7.png

03

53bfdcb3ba48c64c46d48a9334ec2e2e.png

04

a8f57e9bf284e86b0bd09f279352e41e.png

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

7c75b9b9671e7ad024c9a0f97bdb60c4.png

958ff3a3fe56356dbf1132157db682cf.png

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

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

ffadcd502cac9549c309be5264e542b5.png

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

60427a5d72b4b4b355553e67ff2fd639.jpeg

sipt(mcod, pch=12)

be69ff2c5200b8c96b2a4db868721c2b.jpeg

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

fa514fd73729e96ab1e266ff21876fed.png

删除重复行

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

00443bdf48ebf4c768c674198b2fbf10.png

comd_ata <- comdta\[!duplicated(), \]

查看离群点

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

6b8586b2ac679804b828f73243a60859.png

ggplot(copd\_dta)+geom\_boxplot(aes(factor(1cigDy))

ffef43e027407c210cda0bd7ea2fd231.png

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

748a82038f81ebc6b36e430410331ed0.png

ggplot(colt\_ta)+geom\_boxplot(aes(factor(1),syBP))

bdbf1b1a56c4c83eab30e7679e7a762c.png

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

de98908273ed0d878e1785d50b051912.png

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

78ea4fc42804407adec4f336e3357fb0.png

a069921abd4c6e925a8ccf8a007c7f38.png

7a0089d86131714d6a68a1c068fb2963.png

# 查看cigsPerDay
cigs\_sub <- comled\_dta
# 查看totChol,删除异常点
# 查看sysBP, 删除异常点
# 查看BMI

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

# 删除各变量离群点
competedata
# 分类型变量列联分析
ggplot+geom_boxplot

446458c8f6d195031f38423ec5535e63.png

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

700b559271c102f419c6d6b00ae4f610.png

cometddata %>% fitr %>% 
ggplot

d0a770aba16d08be24e773dd0e808bd7.png

2c8cb1b32bab9ecb9aa552d9de842b8f.png

a2933eaaef0722529251d0092bf71af7.png

8a737b26b3cf55f9d2fd9acd48d509da.png

789a5cdd7f6b9d014cf9594cf2bcc489.png

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

table1=table
chisq.test

f0ed70bdc68e468dbe49ca20baefb604.png

table1

b882dfb563ad368c13b5b42f773009a8.png

table2=table
chisq.test

588b7c39e091b612ea28c3c13216dfde.png

table3=table
chisq.test

26f8496bdebafea3895a827f6ea9bc70.png

chisq.test

530809d3dde9e5269e4db42c2e56ea7c.png

6a8ccbf1537c36da00c8c7ebb63e64e5.png

a96dedca6fe9feb5af17dd9d1fd7b79c.png

1fe66039eee1c4c995ce06072af3ef5c.png

49bff216ca41c36bd55443e581b17d8a.png

ggpairs

ce65c936c555a50a1ff5d221fb3b9060.jpeg

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

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

模型

# 划分数据集

split = sample.split

train = subset

逻辑回归

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

a1536177f4242bf5b5777a9fc91b3188.png

364ec6d1d3b783a1f860fb87cd1c9076.png

fldaog = glm
summary(fuatLg)

37fba0f68f0eb628630b64030b841595.png

prdts = predict
glm_le <- table
ACCU

4433d7d9a35918b93e0592b507f53683.png

随机森林

rfoel <- randomForest
# 获得重要性
imprace

9f8ead44fb784551eea5eebfda4b9b5e.png

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

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

ec66668484babde7b8bd6724afc0735d.jpeg

# 获取重要性
ggplot +
   geom_bar
   geom_text

ce3461879cd397f76f06f0844dad1c43.png

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

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

a2ae1f53a2e9850d5a6602493f1ee14b.png

plot(margin

ff9e8391831a2af345893c5550a158f7.png

SVM支持向量机

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

af1591447c7fd58d5fd7e2f9d8de53ff.png

037062336a146fffa5d5a7a6fe41eab3.png

5c5c6dba6cf81d4e25beb26345844c0b.png

1c9a383a5d55abf3dfa690bfa85e0dd3.png

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

6fa7a51aa268c074e0c6d11232efd062.png

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

7fbd9798e3cf377291b0a14e9f743986.png

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

26d392465e8cda60c4ef690e7104fcf3.png

模型诊断

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

sum

b10affca665a6af2490ff8818bd3c320.png

sum(TeYaHD == 0)

64951e9fc46b82812b2967ee467e8604.png

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

数据获取

在下面公众号后台回复“心脏病风险数据”,可获取完整数据。


3ae0d4db0a28a3536ae7031f8d93f63c.png

本文摘选《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)回归树检测异常值

29ef5002931b6a7404e80057557e0c49.png

fe5edea04ad1a97d3ac717224d5259be.jpeg

6a9c4db70407947d02d28ff8ba01c91c.png

来源:https://blоg.сsdn.nеt/tесdаt/аrtiсlе/dеtаils/130418226

智能推荐

最近我们被客户要求撰写关于逻辑回归的研究报告&#xff0c;包括一些图形和统计输出。本文介绍了逻辑回

标签:r语言  逻辑回归  回归  

本文是一个课程报告&#xff0c;由我和另外一位同学合作完成。自我感觉做的还行决定放上来。

标签:逻辑回归  随机森林  数据分析  

注&#xff1a;本文是小编学习实战心得分享&#xff0c;欢迎交流讨论&#xff01;话不多说&#

标签:数据分析  sklearn  sklearn  python  回归  

       大家好&#xff0c;我是带我去滑雪&#xff0c;每天教你一个小技巧&#xff01;

标签:机器学习  随机森林  支持向量机  

猜你喜欢

        与传统的神经网络相比&#x

标签:Matlab智能算法的数学建模  支持向量机  回归  MATLAB  

本文重点 本节课程从逻辑回归的角度引入支持向量机,从而学到支持向量机地优化函数是

标签:每天五分钟玩转机器学习算法  支持向量机  逻辑回归  人工智能  算法  

一、LS-SVMlab工具箱下载 获

标签:MATLAB  

 本次案例还是适合人文社科领域&#xff0c;金融或者新闻专业。本科生做线性回归和主成分回归就够了&

标签:Python数据分析案例  python  数据分析  机器学习  线性回归  随机森林  

暑期简单学习了机器学习理论知识&#xff0c;当时跟着B站咕泡老师学的&#xff0c;内容讲得蛮详细

标签:机器学习  r语言  随机森林  支持向量机  决策树  

相关问题

相关文章

热门文章

推荐文章

相关标签