有没有办法更改 mlr3 中的默认公式?

Is there a way to change default formula in mlr3?

我正在研究 {mlr3} 包,我想比较 2 个模型:

我没有在文档中找到在任务创建中指定公式的方法。默认值为 ~ .。 我可以用 model.matrix 找到一个 hacky 方法并用这些新列设置另一个任务,但我可能会遗漏一些东西。

您可能正在寻找 PipeOpModelMatrix function from mlr3pipelines

例如

task <- as_task_regr(iris[1:4], target = "Sepal.Length")
lrn <- lrn("regr.lm")
pop <- po("modelmatrix", formula = ~ .  ^ 2)

pop %>>%
  lrn -> gr
  
GraphLearner$new(gr) -> gr

gr$train(task)
gr$model$modelmatrix$outtasklayout
#output
                         id    type
1:              (Intercept) numeric
2:             Petal.Length numeric
3: Petal.Length:Petal.Width numeric
4: Petal.Length:Sepal.Width numeric
5:              Petal.Width numeric
6:  Petal.Width:Sepal.Width numeric
7:              Sepal.Width numeric

gr$model$regr.lm$model
#output
Call:
stats::lm(formula = task$formula(), data = task$data())

Coefficients:
               (Intercept)               `(Intercept)`                Petal.Length                 Petal.Width                 Sepal.Width  
                   1.39837                          NA                     1.15756                    -1.66219                     0.84812  
`Petal.Length:Petal.Width`  `Petal.Length:Sepal.Width`   `Petal.Width:Sepal.Width`  
                   0.06695                    -0.16772                     0.27626