sciml包sciababoot函数发布,轻松完成机器学习ababoost分析
·
AdaBoost(Adaptive Boosting,自适应提升)是一种经典的集成学习(Ensemble Learning)算法,由 Yoav Freund 和 Robert Schapire 于 1995 年提出。它主要用于分类任务(也可扩展到回归),通过组合多个弱学习器(weak learners)来构建一个强学习器(strong learner)。

我目前整合了多个R包,编写了sciababoot函数,可以轻松进行机器学习ababoost分析,下面我来演示一下,先导入R包和数据
library(sciml)
library(scitable)
bc<-read.csv("E:/r/test/demo.csv",sep=',',header=TRUE)
bc <- na.omit(bc)
bc<-bc[,c("HBP","SEX","AGE","FEV1","OCCU","COUGH","EDU")]

数据变量很多,我解释几个我等下要用的,HBP:是否发生高血压,结局指标,AGE:年龄,是我们的协变量,BMI肥胖指数,FEV1肺活量指标,WEIGHT体重,“SBP”,“DBP”:收缩压和舒张压。公众号回复:体检数据,可以获得数据。
整理数据,主要是对数据检查,把分类变量转成因子
out2<-organizedata2(data = bc,username=username,token=token,explore = T)
提取整理好的数据
data<-out2[["data"]]
allVars<-out2[["allVars"]]
fvars<-out2[["factorvarout"]]
对数据3:7划分
set.seed(123)
tr1<- sample(nrow(data),0.7*nrow(data))##随机无放抽取
data_train <- data[tr1,]#70%数据集
data_test<- data[-tr1,]#30%数据集
使用sciababoot函数进行分析,这个函数使用很简单data这里填入数据,y这里填入你的结局变量,var填入你的研究变量
out<-sciababoot(data = data_train,y="HBP",var = allVars,username=username,token=token)




如果咱们想看验证组的结果,可以在datatest加入验证组数据
out<-sciababoot(data = data_train,datatest = data_test,y="HBP",var = allVars,username=username,token=token)
咱们在结果中把模型提取出来
fitababoot<-out[["fit"]]
绘制建模集的ROC
sciroc(fit=fitababoot,newdata = data_train)

验证集ROC曲线
sciroc(fit=fitababoot,newdata = data_test)

咱们也可以像有些sci文章中,把多个模型roc合并一起,我简单演示一下
###随机森林
out<-scirandomForest(data=data_train,y="HBP",username=username,token=token,onlygetfit = T)
fitForest<-out[["fit"]]
##支持向量机
out2<-scisvm(data = data_train,y="HBP",var = allVars,username=username,token=token)
fitsvm<-out2[["fit"]]
##逻辑回归
fit2<- glm(HBP ~ SEX + AGE + FEV1+ OCCU+COUGH+EDU,
family = binomial(link = logit), data = data_train)
##xgboost
out3<-scixgboost(data = data_train,y="HBP",var = allVars,username=username,token=token)
fitxgboot<-out3[["fitxgboot"]]
####ababoot
out<-sciababoot(data=data_train,y="HBP",username=username,token=token)
fitababoot<-out[["fit"]]
建立数据列表
newdata<-list(data_train,data_train,data_train,data_train,data_train)
绘图
out4<-m.sciroc(fitForest,fitsvm,fit2,fitxgboot,fitababoot,newdata = newdata)
out4[["p"]]

提取auc值绘图
rocauc<-out4[["rocauc"]]
out5<-m.sciroc(fitForest,fitsvm,fit2,fitxgboot,fitababoot,newdata = newdata,legend.name =rocauc,legend.title = "模型种类")
out5[["p"]]

绘制验证集的roc曲线
newdata<-list(data_test,data_test,data_test,data_test,data_test)
out6<-m.sciroc(fitForest,fitsvm,fit2,fitxgboot,fitababoot,newdata = newdata)
out6[["p"]]

提取auc值绘图
rocauc<-out6[["rocauc"]]
out7<-m.sciroc(fitForest,fitsvm,fit2,fitxgboot,fitababoot,newdata = newdata,legend.name =rocauc,legend.title = "模型种类")
out7[["p"]]

最后总结一下:
Sciml包已经有随机森林,支持向量机,xgboost, AdaBoost,等对常见的一些机器学习进行分析
后续进一步完成决策曲线编写
更多推荐
所有评论(0)