首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从200个人工创建的R中复制模型中提取AUCs

从200个人工创建的R中复制模型中提取AUCs
EN

Stack Overflow用户
提问于 2016-10-09 08:02:50
回答 1查看 125关注 0票数 0

我一直致力于获得一个引导置信区间周围产生的梯度增强机器学习算法的AUCs,并有一个连续的结果。下面是需要重复至少200次的代码:

  1. 用替换重采样主数据集(n=1000)
  2. 分位数规范化结果变量
  3. 在重放数据集上运行GBM并提取AUC

我知道在SAS中,我可以使用一个宏来运行这段代码200次,创建200个数据集,提取200个AUC的I可以合并,但我不知道如何在R中循环这个。

代码语言:javascript
复制
#calling required packages
library("WVPlots")
source('functions.R')
require(gbm)


#generating some data    
main<-matrix(
  replicate(52,rnorm(1132)),
  ncol=52,
  nrow=1132,
  dimnames = list(
    1:1132,
    1:52)
)
colnames(main)[1] <- "PctControl"


#creating resampled dataset BS[1] (so my aim is to repeat this for BS[1:200]

BS1=matrix(
  rep(as.numeric(NA)), 
  nrow=1000, 
  ncol= ncol(main), 
  dimnames= list(1:1000, colnames(main))
              )

BS1[1:1000,]<-as.matrix (main[sample(nrow(main),size=1000,replace=TRUE),])
BS1<-BS1[order(BS1[,1]),]


Survival <- as.numeric (BS1[,1])

NormedSurvival<- as.numeric( ppoints(Survival) )
BS1<-cbind (NormedSurvival, BS1)

BS1<-as.data.frame(BS1[,-2])


#fitting the GBM model

scwrpxy.fit.gbm = gbm(NormedSurvival~.,
                      data=BS1,
                      n.trees = 50, verbose = T, shrinkage = 0.005, 
                      bag.fraction = 0.25,          # subsampling fraction, 0.5 is probably best
                      train.fraction = 0.3,
                      interaction.depth = 3, n.minobsinnode = 10, distribution = "gaussian",
                      cv.folds = 3) 

summary(scwrpxy.fit.gbm)

#Calculating AUC

predictedGBM<-as.numeric(predict.gbm (scwrpxy.fit.gbm, 
                                      n.trees = 500, 
                                      shrinkage = 0.005, 
                                      interaction.depth=3,
                                      bag.fraction=0.5,
                                      train.fraction=0.3,
                                      cv.folds = 5,  
                                      distribution="gaussian"))


observedGBM<-as.numeric(BS1$NormedSurvival)

TestTox<-as.data.frame(cbind(observedGBM,predictedGBM))

ROCPlot(TestTox,'predictedGBM','observedGBM','gbm model')
gbmAUC = as.numeric(pROC::auc(TestTox$observedGBM,TestTox$predictedGBM))
print(gbmAUC)
EN

回答 1

Stack Overflow用户

发布于 2016-10-09 11:22:51

在SAS中,需要PROC APPENDDATA步骤来追加数据集。在R中,同样的事情需要rbind()。所以做些类似的事情:

代码语言:javascript
复制
if !exists(baseAUC) 
  baseAUC <- gbmAUC
else 
  baseAUC <- rbind(baseAUC,gbmAUC)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39941378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档