https://github.com/berndbischl/mlr
Tip revision: c27261d12b9c0e277d044d54f00127500109b734 authored by Bernd Bischl on 29 October 2014, 01:15:38 UTC
clean up
clean up
Tip revision: c27261d
ClassifTask.R
#' @export
#' @rdname Task
makeClassifTask = function(id, data, target, weights = NULL, blocking = NULL,
positive = NA_character_, fixup.data = "warn", check.data = TRUE) {
assertChoice(fixup.data, choices = c("no", "quiet", "warn"))
assertFlag(check.data)
task = addClasses(makeSupervisedTask("classif", data, target, weights, blocking), "ClassifTask")
if (fixup.data != "no")
fixupData(task, target, fixup.data)
if (check.data)
checkTaskCreation(task, target)
# we expect the target to be a factor from here on
levs = levels(task$env$data[[target]])
m = length(levs)
id = checkOrGuessId(id, data)
task$task.desc = makeTaskDesc.ClassifTask(task, id, target, positive)
return(task)
}
checkTaskCreation.ClassifTask = function(task, target, ...) {
NextMethod("checkTaskCreation")
assertString(target)
assertFactor(task$env$data[[target]], any.missing = FALSE, empty.levels.ok = FALSE, .var.name = target)
}
fixupData.ClassifTask = function(task, target, choice, ...) {
NextMethod("fixupData")
x = task$env$data[[target]]
if (is.character(x) || is.logical(x) || is.integer(x))
task$env$data[[target]] = as.factor(x)
}
makeTaskDesc.ClassifTask = function(task, id, target, positive) {
levs = levels(task$env$data[[target]])
m = length(levs)
if (is.na(positive)) {
if (m <= 2L)
positive = levs[1L]
} else {
if (m > 2L)
stop("Cannot set a positive class for a multiclass problem!")
assertChoice(positive, choices = levs)
}
td = makeTaskDescInternal(task, "classif", id, target)
td$class.levels = levs
td$positive = positive
td$negative = NA_character_
if (length(td$class.levels) == 1L)
td$negative = paste0("not_", positive)
else if(length(td$class.levels) == 2L)
td$negative = setdiff(td$class.levels, positive)
return(addClasses(td, "TaskDescClassif"))
}
#' @export
print.ClassifTask = function(x, ...) {
# remove 1st newline
di = printToChar(table(getTaskTargets(x)), collapse = NULL)[-1L]
m = length(x$task.desc$class.levels)
print.SupervisedTask(x)
catf("Classes: %i", m)
catf(collapse(di, "\n"))
catf("Positive class: %s", x$task.desc$positive)
}