我想知道是否可以在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图中执行此操作?
1条答案
按热度按时间ctzwtxfj1#
如果没有
PipeOp
具有完全相同的功能,您可以编写自己的data.tables
。您已经解决了data.tables
的问题。mlr3pipelines也在内部使用data.tables,因此将您的代码放入PipeOp
应该没有问题。mlr3book解释了如何编写自己的PipeOp
。