Perform (weighted) majority vote prediction from classification Predictions by connecting PipeOpClassifAvg to multiple PipeOpLearner outputs.

If the incoming Learner's $predict_type is set to "response", the prediction obtained is also a "response" prediction with each instance predicted to the prediction from incoming Learners with the highest total weight. If the Learner's $predict_type is set to "prob", the prediction obtained is also a "prob" type prediction with the probability predicted to be a weighted average of incoming predictions.

All incoming Learner's $predict_type must agree.

Weights can be set as a parameter; if none are provided, defaults to equal weights for each prediction. Defaults to equal weights for each model.


R6Class inheriting from PipeOpEnsemble/PipeOp.


PipeOpClassifAvg$new(innum = 0, id = "classifavg", param_vals = list())
  • innum :: numeric(1)
    Determines the number of input channels. If innum is 0 (default), a vararg input channel is created that can take an arbitrary number of inputs.

  • id :: character(1) Identifier of the resulting object, default "classifavg".

  • 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 PipeOpEnsemble. Instead of a Prediction, a PredictionClassif is used as input and output during prediction.


The $state is left empty (list()).


The parameters are the parameters inherited from the PipeOpEnsemble.


Inherits from PipeOpEnsemble by implementing the private$weighted_avg_predictions() method.


Only fields inherited from PipeOpEnsemble/PipeOp.


Only methods inherited from PipeOpEnsemble/PipeOp.

See also


library("mlr3") # Simple Bagging gr = greplicate(n = 5, po("subsample") %>>% po("learner", lrn("classif.rpart")) ) %>>% po("classifavg") mlr3::resample(tsk("iris"), GraphLearner$new(gr), rsmp("holdout"))
#> <ResampleResult> of 1 iterations #> * Task: iris #> * Learner: subsample_1.subsample_2.subsample_3.subsample_4.subsample_5.classif.rpart_1.classif.rpart_2.classif.rpart_3.classif.rpart_4.classif.rpart_5.classifavg #> * Warnings: 0 in 0 iterations #> * Errors: 0 in 0 iterations