如何使用 mlr3 估算数据并使用 NA 值进行预测?
How to impute data with mlr3 and predict with NA values?
我遵循了 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.
mlr3gallery 中的示例似乎适用于您的情况,所以您基本上
必须调换 imputehist
和 missind
.
的顺序
另一种方法是将 missind 的 which
超参数设置为 "all" 以强制为每一列创建一个指标。
这实际上是一个错误,其中 missind
returns 如果对数据进行训练,则为完整任务
没有遗漏(然后又覆盖了估算值)。
非常感谢您发现它。我正在尝试在此处修复它 PR
我遵循了 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.
mlr3gallery 中的示例似乎适用于您的情况,所以您基本上
必须调换 imputehist
和 missind
.
另一种方法是将 missind 的 which
超参数设置为 "all" 以强制为每一列创建一个指标。
这实际上是一个错误,其中 missind
returns 如果对数据进行训练,则为完整任务
没有遗漏(然后又覆盖了估算值)。
非常感谢您发现它。我正在尝试在此处修复它 PR