乐趣区

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

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

# 思考减少变量 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.split

train = subset

逻辑回归

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

 

fldaog = glm
summary(fuatLg)

prdts = predict
glm_le <- table
ACCU

随机森林

rfoel <- randomForest
# 取得重要性
imprace

# 抉择重要的因素
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)

针对这一景象,须要采取办法均衡数据集。


最受欢迎的见解

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 语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测

退出移动版