R/create_measure.R

Defines functions create_measure

Documented in create_measure

#' Function that given "classif" or "regr" returns a suitable measure
#'
#' @param task mlr3 task
#' @param measure user defined measure
#'
#' @examples
#' create_measure(tsk("iris"))
#' create_measure(tsk("german_credit"))
#' create_measure(tsk("bike_sharing"))
#'
#' @return mlr3 measure
#'
#' @export
#'
#' @import mlr3verse
#' @import mlr3
#'

create_measure <- function(task, measure = NULL){

  cr <- task$task_type

  if (is.null(measure)) {

    if (cr == "regr") {
      type <- cr
    } else {
      type <- task$properties
    }

    meas <- switch (type,
                   regr = mlr3::msr("regr.rmse"),
                   twoclass = mlr3::msr("classif.bacc"),
                   multiclass = mlr3::msr("classif.bacc")
    )
  } else {
    meas <- mlr3::msr(measure)

    if (task$task_type != meas$task_type) {
      stop("measure not supported")
    }

    if (cr == "classif") {
      if (task$properties == "multiclass") {
        if (meas$task_properties == "twoclass") {
          stop("measure not supported")
        }
      }
    }

  }

  return(meas)
}
el-mrt/auto-statistics documentation built on March 19, 2022, 1:57 p.m.