原文链接:http://tecdat.cn/?p=24973
简介
世界卫生组织预计全世界每年有 1200 万人死于心脏病。在美国和其余发达国家,一半的死亡是因为心血管疾病。心血管疾病的晚期预后能够帮忙决定扭转高危患者的生存形式,从而缩小并发症。本钻研旨在查明心脏病最相干/危险因素,并应用机器学习预测总体危险。
数据筹备
起源
该数据集来自对Framingham居民正在进行的心血管钻研。分类指标是预测患者将来是否有 10 年患冠心病 (CHD) 的危险。数据集提供了患者的信息。它包含超过 4,000 条记录和 15 个属性。
变量
每个属性都是一个潜在的危险因素。有人口、行为和医疗危险因素。
人口统计:
• 性别:男性或女性(标量)
• 年龄:患者年龄;(间断 - 只管记录的年龄已被截断为整数,但年龄的概念是间断的)
行为
• 以后吸烟者:患者是否是以后吸烟者(标量)
• 每天吸烟数:此人一天内均匀吸烟的香烟数量。(能够认为是间断的,因为一个人能够领有任意数量的香烟,甚至半支香烟。)
• BP Meds:患者是否服用降压药(标量)
•中风:患者之前是否有中风(标量)
• Hyp:患者是否患有高血压(标量)
• 糖尿病:患者是否患有糖尿病(标量)
• Tot Chol:总胆固醇程度(间断)
• Sys BP:收缩压(间断)
• Dia BP:舒张压(间断)
• BMI:体重指数(间断)
• 心率:心率(间断 - 在医学钻研中,心率等变量尽管实际上是离散的,但因为存在大量可能值而被认为是间断的。)
• 葡萄糖:葡萄糖程度(间断)
预测变量(预期指标)
• 10 年患冠心病 CHD 的危险(二进制:“1”示意“是”,“0”示意“否”)
心脏病预测
# 获取数据rdaa <- read.csv(门路)
# 这边能够思考减少变量收缩压与舒张压之差、形容收缩压、舒张压与高血压等级的变量# 看数据结构str(ata)
# 思考减少变量bplevelraw_data <- sqldf# 对变量类别进行辨别ra_da <- mapstr(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 <- completefir_aa$loe <- miout$guosesum(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))
# 查看cigsPerDaycigs\_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=tablechisq.test
table1
table2=tablechisq.test
table3=tablechisq.test
chisq.test
ggpairs
diaBP和sysBP有多重共线性的问题。
currentSmoker变量可能不显着,上面进入模型局部。
模型
# 划分数据集split = sample.splittrain = subset
逻辑回归
# 逻辑回归模型 - 应用所有变量fultaog = glmsummary(fulog)
fldaog = glmsummary(fuatLg)
prdts = predictglm_le <- table
ACCU
随机森林
rfoel <- randomForest# 取得重要性imprace
# 抉择重要的因素rfmdel <- randomForest# 误差plot
# 获取重要性ggplot + geom_bar geom_text
这里有患病危险的误差不降反升,须要探索其中起因
# 绘制分类图像pred<-predictpdou_1<-predict #输入概率table <- tablesum(diag/sum #预测准确率
plot(margin
SVM反对向量机
# 先进行模型调优tud <- tune.svmsummary(tud )
# 应用turning函数失去最佳参数设置反对向量机mel.nd <- svmcost=tuned$summary(modted)
# 调用predict函数基于刚配置好的SVM模型进行类标号的预测:sm.ne.ed <- predictsv.tuedtble <- tablesm.ue.tbe
acy.s.vm <- sum(diag)/sum
模型诊断
依据下面三个模型的后果,能够看出预测后果的类别数量散布十分不平衡
sum
sum(TeYaHD == 0)
针对这一景象,须要采取办法均衡数据集。
最受欢迎的见解
1.R语言多元Logistic逻辑回归 利用案例
2.面板平滑转移回归(PSTR)剖析案例实现剖析案例实现")
3.matlab中的偏最小二乘回归(PLSR)和主成分回归(PCR)
4.R语言泊松Poisson回归模型剖析案例
5.R语言混合效应逻辑回归Logistic模型剖析肺癌
6.r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现
7.R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病
8.python用线性回归预测股票价格
9.R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测