首页 > 解决方案 > 如何从 R 中的 mlr 包创建的模型中删除变量?

问题描述

这有点类似于我在这里提出的问题。但是,这个问题是零答案,我认为这个问题在获得回应方面可能更有成效。

我想要做的是从mlr创建的模型中删除一些特征,而不必再次拟合模型。例如,如果我们BostonMASS库中获取数据并创建一个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再次拟合经过训练的模型?

我知道可以从taskusing中删除功能dropFeatures(),例如:

bTask1 <- dropFeatures(bTask, c("zn", "chas", "rad"))

但是,如果我尝试混合bTask1bMod喜欢这样:

pred1 <- predict(bMod, btask1)

我得到了明智的错误:

predict.randomForest(.model$learner.model, newdata = .newdata, 中的错误:训练数据中的变量在 newdata 中丢失

有没有办法从mlr创建的模型(即bMod)中删除一些特征而不再次拟合它?

标签: rmlr

解决方案


推荐阅读