R. 如何将 sapply() 应用于随机森林
R. How to apply sapply() to random forest
我需要用到RandomForest包的一批模型。我决定使用列表 list.of.models 来存储它们。现在我不知道如何应用它们。我使用
添加一个列表
list.of.models <- append(list.of.models, randomForest(data, as.factor(label))
然后尝试使用
sapply(list.of.models[length(list.of.models)], predict, data, type = "prob")
调用最后一个,但问题是 randomForest returns 一个包含许多值的列表,而不是学习器。
如何添加到列表 RF 模型然后调用它?例如让我们拿一个源代码
data(iris)
set.seed(111)
ind <- sample(2, nrow(iris), replace = TRUE, prob=c(0.8, 0.2))
iris.rf <- randomForest(Species ~ ., data=iris[ind == 1,])
iris.pred <- predict(iris.rf, iris[ind == 2,])
使用 append 你正在使用 RF.model 中的元素扩展你的 model.list,因此不被 predict.randomForest 等识别,因为外部容器列表及其属性 class="randomForest" 丢失。此外,数据输入在 predict.randomForest.
中命名为 newdata
这应该有效:
set.seed(1234)
library(randomForest)
data(iris)
test = sample(150,25)
#create 3 models
RF.models = lapply(1:3,function(mtry) {
randomForest(formula=Species~.,data=iris[-test,],mtry=mtry)
})
#append extra model
RF.models[[length(RF.models)+1]] = randomForest(formula=Species~.,data=iris[-test,],mtry=4)
summary(RF.models)
#predict all models
sapply(RF.models,predict,newdata=iris[test,])
#predict one model
predict(RF.models[[length(RF.models)]],newdata=iris[test,])
我需要用到RandomForest包的一批模型。我决定使用列表 list.of.models 来存储它们。现在我不知道如何应用它们。我使用
添加一个列表list.of.models <- append(list.of.models, randomForest(data, as.factor(label))
然后尝试使用
sapply(list.of.models[length(list.of.models)], predict, data, type = "prob")
调用最后一个,但问题是 randomForest returns 一个包含许多值的列表,而不是学习器。
如何添加到列表 RF 模型然后调用它?例如让我们拿一个源代码
data(iris)
set.seed(111)
ind <- sample(2, nrow(iris), replace = TRUE, prob=c(0.8, 0.2))
iris.rf <- randomForest(Species ~ ., data=iris[ind == 1,])
iris.pred <- predict(iris.rf, iris[ind == 2,])
使用 append 你正在使用 RF.model 中的元素扩展你的 model.list,因此不被 predict.randomForest 等识别,因为外部容器列表及其属性 class="randomForest" 丢失。此外,数据输入在 predict.randomForest.
中命名为 newdata这应该有效:
set.seed(1234)
library(randomForest)
data(iris)
test = sample(150,25)
#create 3 models
RF.models = lapply(1:3,function(mtry) {
randomForest(formula=Species~.,data=iris[-test,],mtry=mtry)
})
#append extra model
RF.models[[length(RF.models)+1]] = randomForest(formula=Species~.,data=iris[-test,],mtry=4)
summary(RF.models)
#predict all models
sapply(RF.models,predict,newdata=iris[test,])
#predict one model
predict(RF.models[[length(RF.models)]],newdata=iris[test,])