0

我正在尝试根据袋外样本的性能在袋装模型中设置投票。

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)
}

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

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

问题是,我不知道如何从传入数据中删除自举样本。我的 google-fu 显然没有帮助。

谢谢。

4

1 回答 1

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, ])

(为了清楚起见,我建议重命名traindatadata

于 2013-04-30T15:48:36.867 回答