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 GraphLearner$new(graph, id = NULL, param_vals = list(), task_type = NULL, predict_type = NULL)

• graph :: Graph | PipeOp
Graph to wrap. Can be a PipeOp, which is automatically converted to a Graph. This argument is usually cloned, unless clone_graph is FALSE; to access the Graph inside GraphLearner by-reference, use $graph. • id :: character(1) Identifier of the resulting Learner. • param_vals :: named list List of hyperparameter settings, overwriting the hyperparameter settings . Default list(). • task_type :: character(1) What task_type the GraphLearner should have; usually automatically inferred for Graphs that are simple enough. • predict_type :: character(1) What predict_type the GraphLearner should have; usually automatically inferred for Graphs that are simple enough. • clone_graph :: logical(1) Whether to clone graph upon construction. Unintentionally changing graph by reference can lead to unexpected behaviour, so TRUE (default) is recommended. In particular, note that the $state of $graph is set to NULL by reference on construction of GraphLearner, during $train(), and during $predict() when clone_graph is FALSE. ## Fields Fields inherited from PipeOp, as well as: • graph :: Graph Graph that is being wrapped. This field contains the prototype of the Graph that is being trained, but does not contain the model. Use graph_model to access the trained Graph after $train(). Read-only.

• graph_model :: Learner
Graph that is being wrapped. This Graph 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