r - 如何使用 mlr3 估算数据并使用 NA 值进行预测?
问题描述
我遵循了mlr3 关于使用管道对数据进行插补的文档。但是,如果一列是 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
and的顺序missind
。
另一种方法是将missind 的which
超参数设置为“all”,以强制为每一列创建一个指标。
这实际上是一个错误,missind
如果对没有缺失的数据进行训练,则会返回完整的任务(这反过来又会覆盖估算的值)。非常感谢您发现它。我正在尝试在这里修复它PR
推荐阅读
- android - 如何从 Android Manifest 元标记中引用我的 colors.xml 文件?
- wordpress - 上传适合区域的大型背景图片的推荐尺寸是多少?
- c# - 我们如何在逻辑应用程序中转义 json 数据?
- linux - 如何在shell中使用正则表达式来匹配文件名?
- r - 在随机森林 mtry 图中添加点
- c# - 如何让文本文件按不同 RichTextBoxes 中的字符串拆分?
- python - Unnamed Arguments in Functions: Equivalent of R's Triple Dot
- java - 如何在 Telegram 中获取给定机器人中所有聊天 ID 的列表?
- sql - 如何找到特定月份(与年份无关)销量最低的产品的总和
- reactjs - ReactJS:如何只调用一次 useEffect 挂钩来获取 API 数据