-
-
Notifications
You must be signed in to change notification settings - Fork 20
/
TaskDens.R
42 lines (40 loc) · 1.42 KB
/
TaskDens.R
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
37
38
39
40
41
42
#' @title Density Task
#'
#' @description
#' This task specializes [TaskUnsupervised] for density estimation problems.
#' The data in `backend` should be a numeric vector or a one column matrix-like object.
#' The `task_type` is set to `"density"`.
#'
#' Predefined tasks are stored in the [dictionary][mlr3misc::Dictionary] [mlr_tasks].
#'
#' @template param_rows
#' @template param_id
#' @template param_backend
#' @template param_label
#'
#' @family Task
#' @export
#' @examples
#' task = TaskDens$new("precip", backend = precip)
#' task$task_type
TaskDens = R6::R6Class("TaskDens",
inherit = TaskUnsupervised,
public = list(
#' @description
#' Creates a new instance of this [R6][R6::R6Class] class.
#' @param backend ([DataBackend])\cr
#' Either a [DataBackend], a matrix-like object, or a numeric vector.
#' If weights are used then two columns expected, otherwise one column. The weight column
#' must be clearly specified (via `[Task]$col_roles`) or the learners will break.
initialize = function(id, backend, label = NA_character_) {
if (test_numeric(backend)) {
backend = data.frame(x = backend)
} else if (test_class(backend, "DataBackend")) {
assert_numeric(backend$ncol, lower = 2, upper = 3)
} else {
assert_numeric(ncol(backend), lower = 1, upper = 2)
}
super$initialize(id = id, task_type = "dens", backend = backend, label = label)
}
)
)