原文链接: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))
数据分享|逻辑回归、随机森林、SVM支持向量机预测心脏病风险数据和模型诊断可视化(下):https://developer.aliyun.com/article/1489841?spm=a2c6h.13148508.setting.29.658d4f0eueN6WO