Это несколько похоже на вопрос, который я задал здесь . Однако на этот вопрос нет ответов, и я думаю, что этот вопрос может быть более плодотворным для получения ответа.
Я пытаюсь удалить некоторые функции из созданной модели mlr
без необходимости подгонки модель снова. Например, если мы берем данные Boston
из библиотеки MASS
и создаем модель mlr
, например:
library(mlr)
library(MASS)
# Using the mlr package to train the data:
bTask <- makeRegrTask(data = Boston, target = "medv")
bLearn <- makeLearner("regr.randomForest")
bMod <- train(bLearn, bTask)
А затем я использую task
и обучал model
в какой-то функции, например:
someFunc <- function(task, model){
pred <- predict(model, task)
pred <- pred$data$response
head(pred,10)
}
someFunc(bTask,bMod)
Все работает нормально. Но мне интересно, можно ли удалить некоторые переменные из bMod
без необходимости снова соответствовать обученной модели mlr
?
Я знаю, что можно удалить функции из task
, используя dropFeatures()
, например:
bTask1 <- dropFeatures(bTask, c("zn", "chas", "rad"))
Но если я попытаюсь смешать bTask1
и bMod
вот так :
pred1 <- predict(bMod, btask1)
Я получаю разумную ошибку:
Ошибка в predic.randomForest (.model $ Learner.model, newdata = .newdata,: переменные в обучающих данных отсутствуют в новых данных
Есть ли способ удалить некоторые функции из созданной модели mlr
(например, bMod
) без повторной подгонки?