Perform alternative path branching: PipeOpBranch
has multiple output channels
that connect to different paths in a Graph
. At any time, only one of these
paths will be taken for execution. At the end of the different paths, the
PipeOpUnbranch
PipeOp
must be used to indicate the end of alternative paths.
Not to be confused with PipeOpCopy
, the naming scheme is a bit unfortunate.
Construction
options
::numeric(1)
|character
Ifoptions
is an integer number, it determines the number of output channels / options that are created, namedoutput1
...output<n>
. The$selection
parameter will then be an integer. Ifoptions
is acharacter
, it determines the names of channels directly. The$selection
parameter will then be factorial.id
::character(1)
Identifier of resulting object, default"branch"
.param_vals
:: namedlist
List of hyperparameter settings, overwriting the hyperparameter settings that would otherwise be set during construction. Defaultlist()
.
Input and Output Channels
PipeOpBranch
has one input channel named "input"
, taking any input ("*"
) both during training and prediction.
PipeOpBranch
has multiple output channels depending on the options
construction argument, named "output1"
, "output2"
, ...
if options
is numeric
, and named after each options
value if options
is a character
.
All output channels produce the object given as input ("*"
) or NO_OP
, both during training and prediction.
State
The $state
is left empty (list()
).
Parameters
selection
::numeric(1)
|character(1)
Selection of branching path to take. Is aParamInt
if theoptions
parameter during construction was anumeric(1)
, and ranges from 1 tooptions
. Is aParamFct
if theoptions
parameter was acharacter
and its possible values are theoptions
values. Initialized to either 1 (if theoptions
construction argument isnumeric(1)
) or the first element ofoptions
(if it ischaracter
).
Internals
Alternative path branching is handled by the PipeOp
backend. To indicate that
a path should not be taken, PipeOpBranch
returns the NO_OP
object on its
output channel. The PipeOp
handles each NO_OP
input by automatically
returning a NO_OP
output without calling private$.train()
or private$.predict()
,
until PipeOpUnbranch
is reached. PipeOpUnbranch
will then take multiple inputs,
all except one of which must be a NO_OP
, and forward the only non-NO_OP
object on its output.
Fields
Only fields inherited from PipeOp
.
Methods
Only methods inherited from PipeOp
.
See also
https://mlr-org.com/pipeops.html
Other PipeOps:
PipeOp
,
PipeOpEnsemble
,
PipeOpImpute
,
PipeOpTargetTrafo
,
PipeOpTaskPreproc
,
PipeOpTaskPreprocSimple
,
mlr_pipeops
,
mlr_pipeops_adas
,
mlr_pipeops_blsmote
,
mlr_pipeops_boxcox
,
mlr_pipeops_chunk
,
mlr_pipeops_classbalancing
,
mlr_pipeops_classifavg
,
mlr_pipeops_classweights
,
mlr_pipeops_colapply
,
mlr_pipeops_collapsefactors
,
mlr_pipeops_colroles
,
mlr_pipeops_copy
,
mlr_pipeops_datefeatures
,
mlr_pipeops_decode
,
mlr_pipeops_encode
,
mlr_pipeops_encodeimpact
,
mlr_pipeops_encodelmer
,
mlr_pipeops_featureunion
,
mlr_pipeops_filter
,
mlr_pipeops_fixfactors
,
mlr_pipeops_histbin
,
mlr_pipeops_ica
,
mlr_pipeops_imputeconstant
,
mlr_pipeops_imputehist
,
mlr_pipeops_imputelearner
,
mlr_pipeops_imputemean
,
mlr_pipeops_imputemedian
,
mlr_pipeops_imputemode
,
mlr_pipeops_imputeoor
,
mlr_pipeops_imputesample
,
mlr_pipeops_kernelpca
,
mlr_pipeops_learner
,
mlr_pipeops_learner_pi_cvplus
,
mlr_pipeops_learner_quantiles
,
mlr_pipeops_missind
,
mlr_pipeops_modelmatrix
,
mlr_pipeops_multiplicityexply
,
mlr_pipeops_multiplicityimply
,
mlr_pipeops_mutate
,
mlr_pipeops_nearmiss
,
mlr_pipeops_nmf
,
mlr_pipeops_nop
,
mlr_pipeops_ovrsplit
,
mlr_pipeops_ovrunite
,
mlr_pipeops_pca
,
mlr_pipeops_proxy
,
mlr_pipeops_quantilebin
,
mlr_pipeops_randomprojection
,
mlr_pipeops_randomresponse
,
mlr_pipeops_regravg
,
mlr_pipeops_removeconstants
,
mlr_pipeops_renamecolumns
,
mlr_pipeops_replicate
,
mlr_pipeops_rowapply
,
mlr_pipeops_scale
,
mlr_pipeops_scalemaxabs
,
mlr_pipeops_scalerange
,
mlr_pipeops_select
,
mlr_pipeops_smote
,
mlr_pipeops_smotenc
,
mlr_pipeops_spatialsign
,
mlr_pipeops_subsample
,
mlr_pipeops_targetinvert
,
mlr_pipeops_targetmutate
,
mlr_pipeops_targettrafoscalerange
,
mlr_pipeops_textvectorizer
,
mlr_pipeops_threshold
,
mlr_pipeops_tomek
,
mlr_pipeops_tunethreshold
,
mlr_pipeops_unbranch
,
mlr_pipeops_updatetarget
,
mlr_pipeops_vtreat
,
mlr_pipeops_yeojohnson
Other Path Branching:
NO_OP
,
filter_noop()
,
is_noop()
,
mlr_pipeops_unbranch
Examples
library("mlr3")
pca = po("pca")
nop = po("nop")
choices = c("pca", "nothing")
gr = po("branch", choices) %>>%
gunion(list(pca, nop)) %>>%
po("unbranch", choices)
gr$param_set$values$branch.selection = "pca"
gr$train(tsk("iris"))
#> $unbranch.output
#> <TaskClassif:iris> (150 x 5): Iris Flowers
#> * Target: Species
#> * Properties: multiclass
#> * Features (4):
#> - dbl (4): PC1, PC2, PC3, PC4
#>
gr$param_set$values$branch.selection = "nothing"
gr$train(tsk("iris"))
#> $unbranch.output
#> <TaskClassif:iris> (150 x 5): Iris Flowers
#> * Target: Species
#> * Properties: multiclass
#> * Features (4):
#> - dbl (4): Petal.Length, Petal.Width, Sepal.Length, Sepal.Width
#>