R,去除袋装样品以产生袋样品

时间:2013-04-30 08:17:13

标签: r

我正试图根据袋子样品的性能在袋装模型中进行投票。

construct.annet = function(trainset,n,p=1){
  annet.struct = vector(mode="list",length=n)
  cat("Constructing Agregate Neural Network with ",p,"\n")
  for(i in 1:n){
    cat("iteration ",i,"\n")
    bsamp = trainset[sample(p*dim(trainset)[1],replace=T),]
    annet.struct[[i]] = nnet(class~.,data=bsamp,size=sample(4:12,1),maxit=1000)
  }
  return(annet.struct)
}

印刷迭代只是告诉我需要多长时间。至于为什么我随机改变隐藏层的大小,这似乎是当时要做的事情。

我想要做的是在每次迭代构建模型后添加另一行,我在包样本上测试模型,然后记录其预测准确性。然后我将使用该数据来加权最终模型上的百分比投票。 (性能较低的模型减轻了重量等)

问题是,我无法弄清楚如何从传入数据中删除自举样本。而我的谷歌显然没有帮助。

感谢。

1 个答案:

答案 0 :(得分:1)

这个想法是使用索引来绘制到引导子集中的样本,而不是直接提取这些样本:

ibsamp <- sample (nrow (trainset), replace = TRUE)
annet.struct[[i]] = nnet (class ~ ., data = trainset [ibsamp, ],
                          size = sample (4 : 12, 1), maxit = 1000)

然后,您可以使用subset找出哪些样本包含在训练集中

itest <- setdiff (seq_len (nrow (trainset)), ibsamp)
test [[i]] <- predict (annet.struct [[i]], newdata = trainset [itest, ])

(为了清楚起见,我建议将traindata重命名为data