数据分享|逻辑回归、随机森林、SVM支持向量机预测心脏病风险数据和模型诊断可视化(上):https://developer.aliyun.com/article/1489839
# 查看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预测短鳍鳗分布
# 选择重要的因素
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)
针对这一现象,需要采取方法平衡数据集。