我试图多次随机森林中的R结合,采用随机森林“结合”函数生成,但不能从“插入符号”包包装输出随机森林这么做。R:结合森林时随机森林的错误使用插入符号
返回的对象具有类“火车”,而不是“随机森林” - 任何想法吗?
我不清楚如何检索运行插入符号的“训练”功能,我认为应该包含这些后随机森林的对象。
这样做的原因是,我运行在一个大的数据集分析,太大了,与我的硬件上运行随机森林。
要管理和可用内存我已经第一次产生许多小森林数据集,然后使用RF“合并”功能将它们结合在一起。结果是好的,我想对照片中的输出做同样的事情。
问题代码的概要(我宁愿使用一个比一个循环中使用的功能,但我还不清楚应用到本示例)
trainData.Slices <- list() #My data is 'sliced' into manageable pieces, each one being run through randomForest individually before being recombined
trainData.Slices[[1]] <-data.frame("y.val" = runif(1000, 0, 1), pred1 = runif(1000, 1, 5), pred1 = runif(1000, 10, 20))
trainData.Slices[[2]] <- data.frame("y.val" = runif(1000, 0, 1), pred1 = runif(1000, 1, 5), pred1 = runif(1000, 10, 20))
trainData.Slices[[3]] <- data.frame("y.val" = runif(1000, 0, 1), pred1 = runif(1000, 1, 5), pred1 = runif(1000, 10, 20))
slicesRun <- length(trainData.Slices) #Specify how many slices to cut the data into for individual processing
forestList <- list() #The list into which each small forest will be added
nVar <- length(trainData.Slices[[1]])
for (i in 1:slicesRun) {
trainData <- trainData.Slices[[i]]
#The standard randomForest code works perfectly
forestList[[i]] <- randomForest(x=trainData[,-1], y=trainData[,1],ntree=200, importance=TRUE, proximity=TRUE)
print(class(forestList[[i]]))
#caret is returning 'train' objects rather than randomForest objects
forestList_caret[[i]] <- train(y=trainData[,1], x=trainData[,-1], method="rf", trControl=trainControl(method="cv", number=5), prox=TRUE, allowParallel=TRUE)
print(class(forestList_caret[[i]]))
#How can the rf objects be returned instead, or train objects combined?
}
rf.all <- do.call("combine",forestList) #Combine the forests into one
rf.all_caret <- do.call("combine",forestList) #Combine the forests into one
欢迎堆栈溢出 - 见[此FAQ](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)有关提供可重现示例的提示。 – nrussell
谢谢nrussel。现在编辑。 – Jernau