Читать несколько моделей RDS и использовать функцию предикторов в lapply? - PullRequest
0 голосов
/ 23 мая 2019

У меня есть куча моделей, сохраненных как .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 (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')"

Все сделано в том же R-скрипте, где библиотека MLR уже загружена

если я читаю модель по отдельности, она работает

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 будут сохранены все прогнозы.

1 Ответ

0 голосов
/ 23 мая 2019

просто загрузка с использованием имен файлов, которые он работал

files = list.files(path = 'C:/rf_models', pattern = '.rds$', full.names = TRUE)
for (i in 1:80){
  model <- readRDS(files[i])
  prediction <- predict(model, newdata = as.data.frame(test_data))
  print(prediction)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...