如何使用mlr3估算数据并使用NA值进行预测?

问题描述 投票:1回答:1

我遵循mlr3的documentation,关于使用管道进行数据插入。但是,如果一栏为NA

,我训练的模式不允许进行预测

您知道为什么它不起作用吗?

训练步骤

library(mlr3)
library(mlr3learners)
library(mlr3pipelines)


data("mtcars", package = "datasets")
data = mtcars[, 1:3]
str(data)
task_mtcars = TaskRegr$new(id="cars", backend = data, target = "mpg")


imp_missind = po("missind")
imp_num     = po("imputehist", param_vals =list(affect_columns = selector_type("numeric")))
scale = po("scale")
learner = lrn('regr.ranger')

graph = po("copy", 2) %>>% 
  gunion(list(imp_num %>>% scale,imp_missind)) %>>%
  po("featureunion") %>>%
  po(learner)
graph$plot()

graphlearner = GraphLearner$new(graph)

预测步骤

data = task_mtcars$data()[12:12,]
data[1:1, cyl:=NA]
predict(graphlearner, data)

错误是

Error: Missing data in columns: cyl.
r imputation mlr3
1个回答
0
投票

mlr3gallery中的示例似乎适合您的情况,因此您基本上必须切换imputehistmissind的顺序。

另一种方法是将missind的which超参数设置为“全部”,以便为每列强制创建指标。

这实际上是一个错误,如果经过数据培训,missind将返回完整任务没有遗漏(然后覆盖了估算值)。非常感谢您发现它。我正在尝试在这里修复它PR

© www.soinside.com 2019 - 2024. All rights reserved.