【发布时间】:2015-11-04 14:29:15
【问题描述】:
我尝试为 Ensemble of Ensemble 建模创建一个函数:
library(foreach)
library(randomForest)
set.seed(10)
Y<-round(runif(1000))
x1<-c(1:1000)*runif(1000,min=0,max=2)
x2<-c(1:1000)*runif(1000,min=0,max=2)
x3<-c(1:1000)*runif(1000,min=0,max=2)
all_data<-data.frame(Y,x1,x2,x3)
bagging = function(dataFile, length_divisor = 4, iterations = 100)
{
fit = list()
predictions = foreach(m = 1 : iterations, .combine = cbind) %do%
{
dataFile$Y = as.factor(dataFile$Y)
rf_fit = randomForest(Y ~ ., data = dataFile, ntree = 100)
fit[[m]] = rf_fit
rf_fit$votes[,2]
}
rowMeans(predictions)
return(list(formula = as.formula("Y ~ ."), trees = fit, ntree = 100, class = dataFile$Y, votes = predictions))
}
final_model = bagging(all_data)
predict(final_model, TestData) # It says predict doesn't support final_model object
# Error in UseMethod("predict") : no applicable method for 'predict' applied to an object of class "list"
上面写着——
UseMethod("predict") 中的错误:没有适用于 'predict' 的方法应用于“list”类的对象。
我需要上述函数bagging 来返回一个聚合模型对象,以便我可以预测新数据集。
【问题讨论】:
-
如果您尝试创建一个新的“装袋”函数并希望它返回一个具有自己的预测方法的值,那么您需要分配一个由它返回的类值并创建一个 @ 987654323@-函数来处理结果。确实没有默认的预测功能。只有类特定的方法。
标签: r machine-learning