R/default_fallback.R

Defines functions default_fallback.LearnerRegr default_fallback.LearnerClassif default_fallback.Learner default_fallback

Documented in default_fallback default_fallback.Learner default_fallback.LearnerClassif default_fallback.LearnerRegr

#' @title Create a Fallback Learner
#'
#' @description
#' Create a fallback learner for a given learner.
#' The function searches for a suitable fallback learner based on the task type.
#' Additional checks are performed to ensure that the fallback learner supports the predict type.
#'
#' @param learner [Learner]\cr
#'  The learner for which a fallback learner should be created.
#' @param ... `any`\cr
#' ignored.
#'
#' @return [Learner]
default_fallback = function(learner, ...) {
  UseMethod("default_fallback")
}

#' @rdname default_fallback
#' @export
default_fallback.Learner = function(learner, ...) {
  # FIXME: remove when new encapsulate/fallback system is in place
  return(NULL)
}

#' @rdname default_fallback
#' @export
default_fallback.LearnerClassif = function(learner, ...) {
  fallback = lrn("classif.featureless")

  # set predict type
  if (learner$predict_type %nin% fallback$predict_types) {
    stopf("Fallback learner '%s' does not support predict type '%s'.", fallback$id, learner$predict_type)
  }

  fallback$predict_type = learner$predict_type

  return(fallback)
}

#' @rdname default_fallback
#' @export
default_fallback.LearnerRegr = function(learner, ...) {
  fallback = lrn("regr.featureless")

  # set predict type
  if (learner$predict_type %nin% fallback$predict_types) {
    stopf("Fallback learner '%s' does not support predict type '%s'.", fallback$id, learner$predict_type)
  }

  fallback$predict_type = learner$predict_type

  # set quantiles
  if (learner$predict_type == "quantiles") {

    if (is.null(learner$quantiles) || is.null(learner$quantile_response)) {
      stopf("Cannot set quantiles for fallback learner. Set `$quantiles` and `$quantile_response` in %s.", learner$id)
    }

    fallback$quantiles = learner$quantiles
    fallback$quantile_response = learner$quantile_response
  }

  return(fallback)
}

Try the mlr3 package in your browser

Any scripts or data that you put into this service are public.

mlr3 documentation built on Sept. 24, 2024, 9:07 a.m.