【发布时间】:2019-05-23 14:56:24
【问题描述】:
我有一堆模型保存为 .rds,在读取所有模型后,我在测试数据的循环中使用预测函数,显示预测方法错误,但使用单个模型是有效的。 (模型是使用 mlr 包构建的)
我从一个文件夹中读取所有模型并在测试数据上使用 lapply,
files = list.files(path = 'C:/rf_models', pattern = '\\.rds$', full.names = TRUE)
read_models <- do.call("rbind", lapply(files, readRDS))
print(lapply(read_models, function (x) predict(x, newdata = as.data.frame(test_data))))
它显示在错误下方并在控制台中打开浏览[1]>
Error in UseMethod("predict") :
no applicable method for 'predict' applied to an object of class "c('FilterWrapper', 'BaseWrapper', 'Learner')"
Called from: predict(x, newdata = as.data.frame(test_data))
Browse[1]>
即使我使用 for 循环
for (i in 1:80){
pred_models <- predict(read_models[[i]], newdata = as.data.frame(test_data))
}
也显示
Error in UseMethod("predict") :
no applicable method for 'predict' applied to an object of class "c('FilterWrapper', 'BaseWrapper', 'Learner')"
所有都在我已经加载了 mlr 库的同一个 R 脚本中完成
如果我单独阅读模型,它正在工作
model <- readRDS("C:/rf_models/rf_models_31.rds")
prediction <- predict(model, newdata = as.data.frame(test_data))
prediction
Prediction: 1 observations
predict.type: prob
threshold: 0=0.50,1=0.50
time: 0.03
truth prob.0 prob.1 response
1 0 0.12 0.88 1
我希望 pred_models 存储所有预测。
【问题讨论】:
-
我认为读取多个 .rds 模型无法正常工作
-
我不确定
do.call("rbind")是否在这里做得很好。为什么不在这里使用一个简单的 lapply?