Я пытаюсь объединить несколько случайных лесов в R, используя функцию randomroom «comb», но не могу сделать этого с помощью вывода randomforest из оболочки пакета «caret».R: randomForest error при объединении леса, созданного с использованием Caret
Возвращаемый объект имеет класс «поезд», а не «randomForest» - любые идеи, пожалуйста?
Непонятно, как восстановить объекты randomForest после выполнения функции «train» каретки, которая, как я полагаю, должна содержать их.
Причина в том, что я выполняю анализ на большом наборе данных, слишком большой для запуска randomForest с моим оборудованием.
Чтобы управлять набором данных с доступной памятью, я сначала создал много меньших лесов, а затем объединил их, используя функцию «комбинирование» 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
Добро пожаловать на Stack Overflow - см [этот FAQ] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) для советов по предоставлению воспроизводимого примера. – nrussell
Спасибо nrussel. Редактирование сейчас. – Jernau