A Learner
that encapsulates a Graph
to be used in
mlr3 resampling and benchmarks.
The Graph must return a single Prediction
on its $predict()
call. The result of the $train()
call is discarded, only the
internal state changes during training are used.
The predict_type
of a GraphLearner
can be obtained or set via it's predict_type
active binding.
Setting a new predict type will try to set the predict_type
in all relevant
PipeOp
/ Learner
encapsulated within the Graph
.
Similarly, the predict_type of a Graph will always be the smallest denominator in the Graph
.
A GraphLearner
is always constructed in an untrained state. When the graph
argument has a
non-NULL
$state
, it is ignored.
Format
R6Class
object inheriting from mlr3::Learner
.
Construction
$new(graph, id = NULL, param_vals = list(), task_type = NULL, predict_type = NULL) GraphLearner
graph
::Graph
|PipeOp
Graph
to wrap. Can be aPipeOp
, which is automatically converted to aGraph
. This argument is usually cloned, unlessclone_graph
isFALSE
; to access theGraph
insideGraphLearner
by-reference, use$graph
.id
::character(1)
Identifier of the resultingLearner
.param_vals
:: namedlist
List of hyperparameter settings, overwriting the hyperparameter settings . Defaultlist()
.task_type
::character(1)
Whattask_type
theGraphLearner
should have; usually automatically inferred forGraph
s that are simple enough.predict_type
::character(1)
Whatpredict_type
theGraphLearner
should have; usually automatically inferred forGraph
s that are simple enough.clone_graph
::logical(1)
Whether to clonegraph
upon construction. Unintentionally changinggraph
by reference can lead to unexpected behaviour, soTRUE
(default) is recommended. In particular, note that the$state
of$graph
is set toNULL
by reference on construction ofGraphLearner
, during$train()
, and during$predict()
whenclone_graph
isFALSE
.
Fields
Fields inherited from PipeOp
, as well as:
graph
::Graph
Graph
that is being wrapped. This field contains the prototype of theGraph
that is being trained, but does not contain the model. Usegraph_model
to access the trainedGraph
after$train()
. Read-only.graph_model
::Learner
Graph
that is being wrapped. ThisGraph
contains a trained state after$train()
. Read-only.
Internals
as_graph()
is called on the graph
argument, so it can technically also be a list
of things, which is
automatically converted to a Graph
via gunion()
; however, this will usually not result in a valid Graph
that can
work as a Learner
. graph
can furthermore be a Learner
, which is then automatically
wrapped in a Graph
, which is then again wrapped in a GraphLearner
object; this usually only adds overhead and is not
recommended.
See also
Other Learners:
mlr_learners_avg
Examples
library("mlr3")
graph = po("pca") %>>% lrn("classif.rpart")
lr = GraphLearner$new(graph)
lr = as_learner(graph) # equivalent
lr$train(tsk("iris"))
lr$graph$state # untrained version!
#> $pca
#> NULL
#>
#> $classif.rpart
#> NULL
#>
# The following is therefore NULL:
lr$graph$pipeops$classif.rpart$learner_model$model
#> NULL
# To access the trained model from the PipeOpLearner's Learner, use:
lr$graph_model$pipeops$classif.rpart$learner_model$model
#> n= 150
#>
#> node), split, n, loss, yval, (yprob)
#> * denotes terminal node
#>
#> 1) root 150 100 setosa (0.33333333 0.33333333 0.33333333)
#> 2) PC1< -1.553145 50 0 setosa (1.00000000 0.00000000 0.00000000) *
#> 3) PC1>=-1.553145 100 50 versicolor (0.00000000 0.50000000 0.50000000)
#> 6) PC1< 1.142805 44 1 versicolor (0.00000000 0.97727273 0.02272727) *
#> 7) PC1>=1.142805 56 7 virginica (0.00000000 0.12500000 0.87500000) *
# Feature importance (of principal components):
lr$graph_model$pipeops$classif.rpart$learner_model$importance()
#> PC1 PC2 PC3 PC4
#> 85.795455 18.016529 5.694731 3.254132