首页 > 解决方案 > 有没有办法更改 mlr3 中的默认公式?

问题描述

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

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

标签: rmlr3

解决方案


您可能正在寻找mlr3pipelinesPipeOpModelMatrix的功能。

例如

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 

推荐阅读