File: makeLearners.R

package info (click to toggle)
r-cran-mlr 2.19.2%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 8,264 kB
  • sloc: ansic: 65; sh: 13; makefile: 5
file content (36 lines) | stat: -rw-r--r-- 1,344 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#' @title Create multiple learners at once.
#'
#' @description
#' Small helper function that can save some typing when creating mutiple learner objects.
#' Calls [makeLearner] multiple times internally.
#'
#' @param cls ([character])\cr
#'   Classes of learners.
#' @param ids ([character])\cr
#'   Id strings. Must be unique.
#'   Default is `cls`.
#' @param type (`character(1)`)\cr
#'   Shortcut to prepend type string to `cls` so one can set `cls = "rpart"`.
#'   Default is `NULL`, i.e., this is not used.
#' @inheritParams makeLearner
#' @return (named list of [Learner]). Named by `ids`.
#' @family learner
#' @export
#' @examples
#' \dontshow{ if (requireNamespace("MASS")) \{ }
#' \dontshow{ if (requireNamespace("rpart")) \{ }
#' makeLearners(c("rpart", "lda"), type = "classif", predict.type = "prob")
#' \dontshow{ \} }
#' \dontshow{ \} }
makeLearners = function(cls, ids = NULL, type = NULL, ...) {
  if (!is.null(type)) {
    assertChoice(type, listTaskTypes())
    cls = stri_paste(type, cls, sep = ".")
  }
  assertCharacter(cls, any.missing = FALSE)
  assertCharacter(ids, any.missing = FALSE, len = length(cls), unique = TRUE, null.ok = TRUE)
  ids = coalesce(ids, cls)
  # args check are all done by makeLearner
  lrns = mapply(makeLearner, cl = cls, id = ids, MoreArgs = list(...), SIMPLIFY = FALSE)
  setNames(lrns, ids)
}