Transforms columns using a given formula using the stats::model.matrix() function.

Format

R6Class object inheriting from PipeOpTaskPreprocSimple/PipeOpTaskPreproc/PipeOp.

Construction

PipeOpModelMatrix$new(id = "modelmatrix", param_vals = list())
  • id :: character(1)
    Identifier of resulting object, default "modelmatrix".

  • param_vals :: named list
    List of hyperparameter settings, overwriting the hyperparameter settings that would otherwise be set during construction. Default list().

Input and Output Channels

Input and output channels are inherited from PipeOpTaskPreproc.

The output is the input Task with transformed columns according to the used formula.

State

The $state is a named list with the $state elements inherited from PipeOpTaskPreproc.

Parameters

The parameters are the parameters inherited from PipeOpTaskPreproc, as well as:

  • formula :: formula
    Formula to use. Higher order interactions can be created using constructs like ~. ^ 2. By default, an (Intercept) column of all 1s is created, which can be avoided by adding 0 + to the term. See model.matrix().

Internals

Uses the model.matrix() function.

Methods

Only methods inherited from PipeOpTaskPreprocSimple/PipeOpTaskPreproc/PipeOp.

See also

Examples

library("mlr3") task = tsk("iris") pop = po("modelmatrix", formula = ~ . ^ 2) task$data()
#> Species Petal.Length Petal.Width Sepal.Length Sepal.Width #> 1: setosa 1.4 0.2 5.1 3.5 #> 2: setosa 1.4 0.2 4.9 3.0 #> 3: setosa 1.3 0.2 4.7 3.2 #> 4: setosa 1.5 0.2 4.6 3.1 #> 5: setosa 1.4 0.2 5.0 3.6 #> --- #> 146: virginica 5.2 2.3 6.7 3.0 #> 147: virginica 5.0 1.9 6.3 2.5 #> 148: virginica 5.2 2.0 6.5 3.0 #> 149: virginica 5.4 2.3 6.2 3.4 #> 150: virginica 5.1 1.8 5.9 3.0
pop$train(list(task))[[1]]$data()
#> Species (Intercept) Petal.Length Petal.Width Sepal.Length Sepal.Width #> 1: setosa 1 1.4 0.2 5.1 3.5 #> 2: setosa 1 1.4 0.2 4.9 3.0 #> 3: setosa 1 1.3 0.2 4.7 3.2 #> 4: setosa 1 1.5 0.2 4.6 3.1 #> 5: setosa 1 1.4 0.2 5.0 3.6 #> --- #> 146: virginica 1 5.2 2.3 6.7 3.0 #> 147: virginica 1 5.0 1.9 6.3 2.5 #> 148: virginica 1 5.2 2.0 6.5 3.0 #> 149: virginica 1 5.4 2.3 6.2 3.4 #> 150: virginica 1 5.1 1.8 5.9 3.0 #> Petal.Length:Petal.Width Petal.Length:Sepal.Length #> 1: 0.28 7.14 #> 2: 0.28 6.86 #> 3: 0.26 6.11 #> 4: 0.30 6.90 #> 5: 0.28 7.00 #> --- #> 146: 11.96 34.84 #> 147: 9.50 31.50 #> 148: 10.40 33.80 #> 149: 12.42 33.48 #> 150: 9.18 30.09 #> Petal.Length:Sepal.Width Petal.Width:Sepal.Length Petal.Width:Sepal.Width #> 1: 4.90 1.02 0.70 #> 2: 4.20 0.98 0.60 #> 3: 4.16 0.94 0.64 #> 4: 4.65 0.92 0.62 #> 5: 5.04 1.00 0.72 #> --- #> 146: 15.60 15.41 6.90 #> 147: 12.50 11.97 4.75 #> 148: 15.60 13.00 6.00 #> 149: 18.36 14.26 7.82 #> 150: 15.30 10.62 5.40 #> Sepal.Length:Sepal.Width #> 1: 17.85 #> 2: 14.70 #> 3: 15.04 #> 4: 14.26 #> 5: 18.00 #> --- #> 146: 20.10 #> 147: 15.75 #> 148: 19.50 #> 149: 21.08 #> 150: 17.70
pop$param_set$values$formula = ~ 0 + . ^ 2 pop$train(list(task))[[1]]$data()
#> Species Petal.Length Petal.Width Sepal.Length Sepal.Width #> 1: setosa 1.4 0.2 5.1 3.5 #> 2: setosa 1.4 0.2 4.9 3.0 #> 3: setosa 1.3 0.2 4.7 3.2 #> 4: setosa 1.5 0.2 4.6 3.1 #> 5: setosa 1.4 0.2 5.0 3.6 #> --- #> 146: virginica 5.2 2.3 6.7 3.0 #> 147: virginica 5.0 1.9 6.3 2.5 #> 148: virginica 5.2 2.0 6.5 3.0 #> 149: virginica 5.4 2.3 6.2 3.4 #> 150: virginica 5.1 1.8 5.9 3.0 #> Petal.Length:Petal.Width Petal.Length:Sepal.Length #> 1: 0.28 7.14 #> 2: 0.28 6.86 #> 3: 0.26 6.11 #> 4: 0.30 6.90 #> 5: 0.28 7.00 #> --- #> 146: 11.96 34.84 #> 147: 9.50 31.50 #> 148: 10.40 33.80 #> 149: 12.42 33.48 #> 150: 9.18 30.09 #> Petal.Length:Sepal.Width Petal.Width:Sepal.Length Petal.Width:Sepal.Width #> 1: 4.90 1.02 0.70 #> 2: 4.20 0.98 0.60 #> 3: 4.16 0.94 0.64 #> 4: 4.65 0.92 0.62 #> 5: 5.04 1.00 0.72 #> --- #> 146: 15.60 15.41 6.90 #> 147: 12.50 11.97 4.75 #> 148: 15.60 13.00 6.00 #> 149: 18.36 14.26 7.82 #> 150: 15.30 10.62 5.40 #> Sepal.Length:Sepal.Width #> 1: 17.85 #> 2: 14.70 #> 3: 15.04 #> 4: 14.26 #> 5: 18.00 #> --- #> 146: 20.10 #> 147: 15.75 #> 148: 19.50 #> 149: 21.08 #> 150: 17.70