按组应用mlr3管道

qojgxg4l  于 2023-02-06  发布在  其他
关注(0)|答案(1)|浏览(121)

我想知道是否可以在groupBy的基础上应用mlr3管道处理。
例如,在mlr3pipelines文档中,我们可以使用以下代码缩放预测器:

library(mlr3)
library(mlr3pipelines)
task = tsk("iris")
pop = po("scalemaxabs")
pop$train(list(task))[[1]]$data()

但是,是否可以按组进行缩放。例如,我们将月份列添加到虹膜数据中:

library(mlr3)
library(mlr3pipelines)
task = tsk("iris")
dt = task$data()
dt[, month := c(rep(1, 50), rep(2, 50), rep(3, 50))]
task = as_task_classif(dt, target = "Species", id = "iris")

是否可以按月份列缩放预测值?也就是说,我们希望每个月单独缩放。使用data.table,这很容易:

task$data()[, lapply(.SD, function(x) as.vector(scale(x))), .SDcols = names(DT)[2:5], by = month]

但是是否可以在mlr3pipe图中执行此操作?

ctzwtxfj

ctzwtxfj1#

如果没有PipeOp具有完全相同的功能,您可以编写自己的data.tables。您已经解决了data.tables的问题。mlr3pipelines也在内部使用data.tables,因此将您的代码放入PipeOp应该没有问题。mlr3book解释了如何编写自己的PipeOp

相关问题