我試圖多次隨機森林中的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