diff --git a/.gitignore b/.gitignore index 290cc6be7..45111351c 100644 --- a/.gitignore +++ b/.gitignore @@ -11,57 +11,44 @@ *.swp doc Meta - .vscode/* !.vscode/settings.json !.vscode/tasks.json !.vscode/launch.json !.vscode/extensions.json *.code-workspace - # Local History for Visual Studio Code .history/ - # History files .Rhistory .Rapp.history - # Session Data files .RData - # User-specific files .Ruserdata - # Example code in package build process *-Ex.R - # Output files from R CMD build /*.tar.gz - # Output files from R CMD check /*.Rcheck/ - # RStudio files .Rproj.user/ - # produced vignettes vignettes/*.html vignettes/*.pdf - # OAuth2 token, see https://github.com/hadley/httr/releases/tag/v0.3 .httr-oauth - # knitr and R markdown default cache directories *_cache/ /cache/ - # Temporary files created by R markdown *.utf8.md *.knit.md - # R Environment Variables .Renviron - # pkgdown site docs/ /Meta/ +logger_file +.DS_Store diff --git a/DESCRIPTION b/DESCRIPTION index ddbbf6453..892b7b0d8 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -101,7 +101,12 @@ Suggests: future, htmlwidgets, ranger, - themis + themis, + lgr, + checkmate, + dimRed, + RSpectra, + RANN ByteCompile: true Encoding: UTF-8 Config/testthat/edition: 3 @@ -159,6 +164,8 @@ Collate: 'PipeOpImputeMode.R' 'PipeOpImputeOOR.R' 'PipeOpImputeSample.R' + 'PipeOpInfo.R' + 'PipeOpIsomap.R' 'PipeOpKernelPCA.R' 'PipeOpLearner.R' 'PipeOpLearnerCV.R' diff --git a/NAMESPACE b/NAMESPACE index 1a2ae274e..45b9c12f9 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -132,6 +132,8 @@ export(PipeOpImputeMedian) export(PipeOpImputeMode) export(PipeOpImputeOOR) export(PipeOpImputeSample) +export(PipeOpInfo) +export(PipeOpIsomap) export(PipeOpKernelPCA) export(PipeOpLearner) export(PipeOpLearnerCV) diff --git a/R/Graph.R b/R/Graph.R index a358fa33b..81789c598 100644 --- a/R/Graph.R +++ b/R/Graph.R @@ -720,6 +720,7 @@ graph_load_namespaces = function(self, info) { #' @export +#' @method predict Graph predict.Graph = function(object, newdata, ...) { if (!object$is_trained) { stop("Cannot predict, Graph has not been trained yet") diff --git a/R/PipeOpInfo.R b/R/PipeOpInfo.R new file mode 100644 index 000000000..a95a7efa6 --- /dev/null +++ b/R/PipeOpInfo.R @@ -0,0 +1,146 @@ +#' @title Customizable Information Printer +#' +#' @usage NULL +#' @name mlr_pipeops_info +#' @format [`R6Class`][R6::R6Class] object inheriting from [`PipeOp`] +#' +#' @description +#' Given input is printed in a customizable way. +#' +#' +#' @section Construction: +#' ``` +#' PipeOpInfo$new(id = "info", collect_multiplicity = FALSE, log_target = "lgr::mlr3/mlr3pipelines::info") +#' ``` +#' * `ìd` :: `character(1)`\cr +#' Identifier of resulting object, default "info" +#' * `printer` :: `list` \cr +#' User input, specified printer-functions defined for a new object-classes or used to override their counterparts in the `original_printer` +#' * `collect_multiplicity` :: `logical(1)`\cr +#' If `TRUE`, the input is a [`Multiplicity`] collecting channel. This means, a +#' [`Multiplicity`] input/output, instead of multiple normal inputs/outputs, is accepted and the members are aggregated. +#' * `log_target` :: `character(1)`\cr +#' Specifies how the output is printed, can either be assigned to a logger with a specified level, or can be printer in the +#' format "message", "warning" or "cat". When the log_target is specified as "none", the input will be printed as is. +#' Has either he form :::: for logger output otherwise "message", "warning", "cat" or none. +#' +#' @section Input and Output Channels: +#' `PipeOpInfo` has one input channel called "input", it can take any type of input (*) +#' `PipeOpInfo` has one output channel called "output", it can take any type of output (*) +#' +#' @section State: +#' The `$state` is left empty (`list()`). +#' +#' @section Fields: +#' Fields inherited from `PipeOp`, as well as: +#' * `printer` :: `list`\cr +#' List that contains information on how a specific object-class should be printed to the console. +#' * `log_target` :: `character(1)` \cr +#' Specifies how the printed console output should be displayed to the user. +#' +#' @section Methods: +#' Only methods inherited from [`PipeOp`]. +#' +#' @examples +#' library("mlr3") +#' poinfo = po("info") +#' poinfo$train(list(tsk("mtcars"))) +#' poinfo$predict(list(tsk("penguins"))) +#' +#' @family PipeOps +#' @template seealso_pipeopslist +#' @include PipeOp.R +#' @export +#' +#' + +PipeOpInfo = R6Class("PipeOpInfo", + inherit = PipeOp, + public = list( + initialize = function(id = "info", printer = NULL, collect_multiplicity = FALSE, log_target = "lgr::mlr3/mlr3pipelines::info", param_vals = list()) { + assertString(log_target, pattern = "^(cat|none|warning|message|lgr::[^:]+::[^:]+)$") + inouttype = "*" + if (collect_multiplicity) { + inouttype = sprintf("[%s]", inouttype) + } + super$initialize(id, param_vals = param_vals, + input = data.table(name = "input", train = inouttype, predict = inouttype), + output = data.table(name = "output", train = inouttype, predict = inouttype) + #tag = "debug" + ) + original_printer = list( + Task = crate(function(x) { + list(task = x, data = x$data()[, 1:min(10, ncol(x$data()))]) + }), + Prediction = crate(function(x) { + tryCatch(list(prediction = x, score = x$score()), error = function(e) {list(prediction = x)}) + }), + `NULL` = crate(function(x) "NULL"), + default = crate(function(x) x) + ) + private$.printer = insert_named(original_printer, printer) + private$.log_target = log_target + } + ), + active = list( + printer = function(rhs) { + if (!missing(rhs)) stop("printer is read only.") + private$.printer + }, + log_target = function(rhs) { + if (!missing(rhs)) stop("log_target is read only.") + private$.log_target + } + ), + private = list( + .printer = NULL, + .log_target = NULL, + .output = function(inputs, stage) { + input_class = class(inputs[[1]]) + leftmost_class = + if (any(input_class %in% names(private$.printer))) { + input_class[input_class %in% names(private$.printer)][[1]] + } else { + "default" + } + if (!("default" %in% names(private$.printer))) { + stop("Object-class was not found and no default printer is available.") + } + specific_printer = private$.printer[[leftmost_class]] + log_target_split = strsplit(private$.log_target, "::")[[1]] + stage_string = sprintf("Object passing through PipeOp %s - %s", self$id, stage) + print_string = utils::capture.output({ + cat(stage_string, "\n\n") + specific_printer(inputs[[1]]) + }) + if (log_target_split[[1]] == "lgr") { + logger = lgr::get_logger(log_target_split[[2]]) + log_level = log_target_split[[3]] + logger$log(log_level, msg = print_string) + } else if (private$.log_target == "cat") { + cat(paste(print_string, collapse = "\n")) + } else if (private$.log_target == "message") { + message(paste(print_string, collapse = "\n")) + } else if (private$.log_target == "warning") { + warning(paste(print_string, collapse = "\n")) + } else if (private$.log_target == "none") { + } else { + stopf("Invalid log_target '%s'.", log_target) + } + }, + .train = function(inputs, stage = "Training") { + self$state = list() + private$.output(inputs, stage) + inputs + }, + .predict = function(inputs, stage = "Prediction") { + private$.output(inputs, stage) + inputs + }, + .additional_phash_input = function() { + list(printer = self$printer, log_target = self$log_target) + } + ) +) + +mlr_pipeops$add("info", PipeOpInfo) diff --git a/R/PipeOpIsomap.R b/R/PipeOpIsomap.R new file mode 100644 index 000000000..f949c0538 --- /dev/null +++ b/R/PipeOpIsomap.R @@ -0,0 +1,92 @@ +#' @title Algorithm for Dimensionality Reduction +#' +#' @usage NULL +#' @name mlr_pipeops_isomap +#' @format [`R6Class`][R6::R6Class] object inheriting from [`PipeOpTaskPreproc`] +#' +#' +#' +#' @section Construction: +#' ``` +#' PipeOpIsomap$new(id = "isomap", ...) +#' ``` +#' +#' * `ìd` :: `character(1)`\cr +#' Identifier of resulting object, default `"isomap"` +#' * `param_vals` :: named `list`\cr +#' List of hyperparameter settings, overwriting the hyperparameter settings that would otherwise be set during construction. Default `list()`. +#' +#' @section Input and Output Channels: +#' Input and output channels are inherited from [`PipeOpTaskPreproc`]. +#' +#' The output is the input [`Task`][mlr3::Task] with the data projected on the lower dimension. +#' +#' @section State: +#' The `$state` is a named `list` with the `$state` elements inherited from [`PipeOpTaskPreproc`], as well as: +#' * `embed_result` :: `dimRedResult`\cr +#' The resulting object after applying the "Isomap"-method from the dimRed package to the data. +#' +#' @section Parameters: +#' The parameters are the parameters inherited from [`PipeOpTaskPreproc`], as well as: +#' * `knn` :: `numeric(1)`\cr +#' The number of nearest neighbors in the graph. +#' Initialized to 50. +#' * `ndim` :: `numeric(1)`\cr +#' The number of embedding dimensions. +#' Initialized to 2. +#' * `get_geod` :: `logical(1)`\cr +#' Determines whether the distance matrix should be kept in the `$state` +#' Initialized to `FALSE`. +#' * `.mute` :: `character`\cr +#' A character vector containing the elements you want to mute during training (c("message", "output")). +#' Initialized to `character(0)`. +#' +#' +#' @section Internals: +#' Applies the Isomap Embedding from the `dimRed`-package. +#' +#' @section Fields: +#' Only fields inherited from `PipeOp`. +#' +#' @section Methods: +#' +#' +#' @examples +#' library("mlr3") +#' po = po("isomap") +#' po$train(list(tsk("iris")))[[1]]$data() +#' po$predict(list(tsk("iris")))[[1]]$data() +#' +#' +#' @family PipeOps +#' @template seealso_pipeopslist +#' @include PipeOpTaskPreproc.R +#' @export +#' + +PipeOpIsomap = R6Class("PipeOpIsomap", + inherit = PipeOpTaskPreproc, + public = list( + initialize = function(id = "isomap", param_vals = list()) { + ps = ps( + knn = p_int(default = 50, lower = 1, upper = Inf, tags = c("train", "isomap")), + ndim = p_int(default = 2, lower = 1, upper = Inf, tags = c("train", "isomap")), + get_geod = p_lgl(default = FALSE, tags = c("train", "isomap")), + .mute = p_uty(init = c("message", "output"), tags = c("train", "isomap")) + ) + super$initialize(id = id, param_set = ps, param_vals = param_vals, packages = c("dimRed", "stats")) + } + ), + private = list( + .train_dt = function(dt, levels, target) { + embed_result = mlr3misc::invoke(.f = dimRed::embed, .data = dt, .method = "Isomap", .args = self$param_set$get_values(tags = "isomap")) + self$state = list(embed_result = embed_result) + embed_result@data@data + }, + .predict_dt = function(dt, levels) { + dimRed::predict(self$state$embed_result, as.data.frame(dt))@data + } + ) +) + +mlr_pipeops$add("isomap", PipeOpIsomap) diff --git a/R/zzz.R b/R/zzz.R index 1e9995f19..ebb063ae1 100644 --- a/R/zzz.R +++ b/R/zzz.R @@ -15,7 +15,7 @@ register_mlr3 = function() { x$pipeops$valid_tags = unique(c(x$pipeops$valid_tags, c("abstract", "meta", "missings", "feature selection", "imbalanced data", "data transform", "target transform", "ensemble", "robustify", "learner", "encode", - "multiplicity"))) + "multiplicity", "debug"))) x$pipeops$properties = c("validation", "internal_tuning") } diff --git a/man/PipeOp.Rd b/man/PipeOp.Rd index f5921c3a0..033df4c4b 100644 --- a/man/PipeOp.Rd +++ b/man/PipeOp.Rd @@ -317,6 +317,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/PipeOpEncodePL.Rd b/man/PipeOpEncodePL.Rd index 4407d32a0..45bc4a092 100644 --- a/man/PipeOpEncodePL.Rd +++ b/man/PipeOpEncodePL.Rd @@ -141,6 +141,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/PipeOpEnsemble.Rd b/man/PipeOpEnsemble.Rd index 415859086..8468b0922 100644 --- a/man/PipeOpEnsemble.Rd +++ b/man/PipeOpEnsemble.Rd @@ -138,6 +138,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/PipeOpImpute.Rd b/man/PipeOpImpute.Rd index 1d6e146c3..63ea8641b 100644 --- a/man/PipeOpImpute.Rd +++ b/man/PipeOpImpute.Rd @@ -171,6 +171,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/PipeOpTargetTrafo.Rd b/man/PipeOpTargetTrafo.Rd index 99d957a39..900e26e38 100644 --- a/man/PipeOpTargetTrafo.Rd +++ b/man/PipeOpTargetTrafo.Rd @@ -177,6 +177,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/PipeOpTaskPreproc.Rd b/man/PipeOpTaskPreproc.Rd index 75afdab08..4bdb8260b 100644 --- a/man/PipeOpTaskPreproc.Rd +++ b/man/PipeOpTaskPreproc.Rd @@ -234,6 +234,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/PipeOpTaskPreprocSimple.Rd b/man/PipeOpTaskPreprocSimple.Rd index 9463f488d..4f2ffd53d 100644 --- a/man/PipeOpTaskPreprocSimple.Rd +++ b/man/PipeOpTaskPreprocSimple.Rd @@ -177,6 +177,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops.Rd b/man/mlr_pipeops.Rd index c41449bbe..4c8b8289b 100644 --- a/man/mlr_pipeops.Rd +++ b/man/mlr_pipeops.Rd @@ -129,6 +129,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_adas.Rd b/man/mlr_pipeops_adas.Rd index 33a094003..a74211e09 100644 --- a/man/mlr_pipeops_adas.Rd +++ b/man/mlr_pipeops_adas.Rd @@ -138,6 +138,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_blsmote.Rd b/man/mlr_pipeops_blsmote.Rd index 08c6b0d8d..53aa77b7b 100644 --- a/man/mlr_pipeops_blsmote.Rd +++ b/man/mlr_pipeops_blsmote.Rd @@ -143,6 +143,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_boxcox.Rd b/man/mlr_pipeops_boxcox.Rd index 1b672f56c..177ebfcd1 100644 --- a/man/mlr_pipeops_boxcox.Rd +++ b/man/mlr_pipeops_boxcox.Rd @@ -127,6 +127,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_branch.Rd b/man/mlr_pipeops_branch.Rd index db449402b..f87ccffda 100644 --- a/man/mlr_pipeops_branch.Rd +++ b/man/mlr_pipeops_branch.Rd @@ -140,6 +140,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_chunk.Rd b/man/mlr_pipeops_chunk.Rd index c82b399bf..5208ffbe4 100644 --- a/man/mlr_pipeops_chunk.Rd +++ b/man/mlr_pipeops_chunk.Rd @@ -119,6 +119,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_classbalancing.Rd b/man/mlr_pipeops_classbalancing.Rd index fd95b8cdc..30babcbd5 100644 --- a/man/mlr_pipeops_classbalancing.Rd +++ b/man/mlr_pipeops_classbalancing.Rd @@ -161,6 +161,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_classifavg.Rd b/man/mlr_pipeops_classifavg.Rd index beb232e55..bb98f8e0c 100644 --- a/man/mlr_pipeops_classifavg.Rd +++ b/man/mlr_pipeops_classifavg.Rd @@ -134,6 +134,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_classweights.Rd b/man/mlr_pipeops_classweights.Rd index 678b0c4fa..c68f5c4f4 100644 --- a/man/mlr_pipeops_classweights.Rd +++ b/man/mlr_pipeops_classweights.Rd @@ -139,6 +139,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_colapply.Rd b/man/mlr_pipeops_colapply.Rd index 11b1280c4..ee84e5c72 100644 --- a/man/mlr_pipeops_colapply.Rd +++ b/man/mlr_pipeops_colapply.Rd @@ -149,6 +149,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_collapsefactors.Rd b/man/mlr_pipeops_collapsefactors.Rd index 60044c35b..043966008 100644 --- a/man/mlr_pipeops_collapsefactors.Rd +++ b/man/mlr_pipeops_collapsefactors.Rd @@ -152,6 +152,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_colroles.Rd b/man/mlr_pipeops_colroles.Rd index 6fe93c31a..7e15798e7 100644 --- a/man/mlr_pipeops_colroles.Rd +++ b/man/mlr_pipeops_colroles.Rd @@ -130,6 +130,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_copy.Rd b/man/mlr_pipeops_copy.Rd index be1a51822..4eb5165c8 100644 --- a/man/mlr_pipeops_copy.Rd +++ b/man/mlr_pipeops_copy.Rd @@ -135,6 +135,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_datefeatures.Rd b/man/mlr_pipeops_datefeatures.Rd index 8eeda0e8a..148263d44 100644 --- a/man/mlr_pipeops_datefeatures.Rd +++ b/man/mlr_pipeops_datefeatures.Rd @@ -155,6 +155,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_decode.Rd b/man/mlr_pipeops_decode.Rd index 76b08510b..6c31d7ad1 100644 --- a/man/mlr_pipeops_decode.Rd +++ b/man/mlr_pipeops_decode.Rd @@ -195,6 +195,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_encode.Rd b/man/mlr_pipeops_encode.Rd index bc286e459..8ac00c4b1 100644 --- a/man/mlr_pipeops_encode.Rd +++ b/man/mlr_pipeops_encode.Rd @@ -156,6 +156,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_encodeimpact.Rd b/man/mlr_pipeops_encodeimpact.Rd index 33776ca10..57b7d359f 100644 --- a/man/mlr_pipeops_encodeimpact.Rd +++ b/man/mlr_pipeops_encodeimpact.Rd @@ -140,6 +140,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_encodelmer.Rd b/man/mlr_pipeops_encodelmer.Rd index 33cb75759..ec62dbb1d 100644 --- a/man/mlr_pipeops_encodelmer.Rd +++ b/man/mlr_pipeops_encodelmer.Rd @@ -152,6 +152,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_encodeplquantiles.Rd b/man/mlr_pipeops_encodeplquantiles.Rd index 700611995..775cf968e 100644 --- a/man/mlr_pipeops_encodeplquantiles.Rd +++ b/man/mlr_pipeops_encodeplquantiles.Rd @@ -145,6 +145,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_encodepltree.Rd b/man/mlr_pipeops_encodepltree.Rd index 2053eb2b5..9750d7591 100644 --- a/man/mlr_pipeops_encodepltree.Rd +++ b/man/mlr_pipeops_encodepltree.Rd @@ -160,6 +160,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_featureunion.Rd b/man/mlr_pipeops_featureunion.Rd index de03f667a..bb664e466 100644 --- a/man/mlr_pipeops_featureunion.Rd +++ b/man/mlr_pipeops_featureunion.Rd @@ -153,6 +153,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_filter.Rd b/man/mlr_pipeops_filter.Rd index 308e66011..f6bcd3660 100644 --- a/man/mlr_pipeops_filter.Rd +++ b/man/mlr_pipeops_filter.Rd @@ -182,6 +182,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_fixfactors.Rd b/man/mlr_pipeops_fixfactors.Rd index 2eba59b67..f00fb62bb 100644 --- a/man/mlr_pipeops_fixfactors.Rd +++ b/man/mlr_pipeops_fixfactors.Rd @@ -113,6 +113,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_histbin.Rd b/man/mlr_pipeops_histbin.Rd index 3baeeb225..88fd0dde3 100644 --- a/man/mlr_pipeops_histbin.Rd +++ b/man/mlr_pipeops_histbin.Rd @@ -125,6 +125,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_ica.Rd b/man/mlr_pipeops_ica.Rd index 6de1101d2..4c710d035 100644 --- a/man/mlr_pipeops_ica.Rd +++ b/man/mlr_pipeops_ica.Rd @@ -153,6 +153,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_imputeconstant.Rd b/man/mlr_pipeops_imputeconstant.Rd index 874444d27..711823079 100644 --- a/man/mlr_pipeops_imputeconstant.Rd +++ b/man/mlr_pipeops_imputeconstant.Rd @@ -127,6 +127,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_imputehist.Rd b/man/mlr_pipeops_imputehist.Rd index a53263e3e..e69f7f834 100644 --- a/man/mlr_pipeops_imputehist.Rd +++ b/man/mlr_pipeops_imputehist.Rd @@ -119,6 +119,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_imputelearner.Rd b/man/mlr_pipeops_imputelearner.Rd index fb7c920a9..863967656 100644 --- a/man/mlr_pipeops_imputelearner.Rd +++ b/man/mlr_pipeops_imputelearner.Rd @@ -158,6 +158,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_imputemean.Rd b/man/mlr_pipeops_imputemean.Rd index a4b33fa0f..455a38dd0 100644 --- a/man/mlr_pipeops_imputemean.Rd +++ b/man/mlr_pipeops_imputemean.Rd @@ -112,6 +112,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_imputemedian.Rd b/man/mlr_pipeops_imputemedian.Rd index 8655e1ecc..95ce577c2 100644 --- a/man/mlr_pipeops_imputemedian.Rd +++ b/man/mlr_pipeops_imputemedian.Rd @@ -112,6 +112,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_imputemode.Rd b/man/mlr_pipeops_imputemode.Rd index b35b83b13..5f7b2995a 100644 --- a/man/mlr_pipeops_imputemode.Rd +++ b/man/mlr_pipeops_imputemode.Rd @@ -119,6 +119,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemedian}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_imputeoor.Rd b/man/mlr_pipeops_imputeoor.Rd index 1564640a4..c2bfaf1cc 100644 --- a/man/mlr_pipeops_imputeoor.Rd +++ b/man/mlr_pipeops_imputeoor.Rd @@ -160,6 +160,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemedian}}, \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_imputesample.Rd b/man/mlr_pipeops_imputesample.Rd index e80476851..aae16777f 100644 --- a/man/mlr_pipeops_imputesample.Rd +++ b/man/mlr_pipeops_imputesample.Rd @@ -114,6 +114,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemedian}}, \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_info.Rd b/man/mlr_pipeops_info.Rd new file mode 100644 index 000000000..81f65ef67 --- /dev/null +++ b/man/mlr_pipeops_info.Rd @@ -0,0 +1,156 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/PipeOpInfo.R +\name{mlr_pipeops_info} +\alias{mlr_pipeops_info} +\alias{PipeOpInfo} +\title{Customizable Information Printer} +\format{ +\code{\link[R6:R6Class]{R6Class}} object inheriting from \code{\link{PipeOp}} +} +\description{ +Given input is printed in a customizable way. +} +\section{Construction}{ + + +\if{html}{\out{
}}\preformatted{PipeOpInfo$new(id = "info", collect_multiplicity = FALSE, log_target = "lgr::mlr3/mlr3pipelines::info") +}\if{html}{\out{
}} +\itemize{ +\item \code{ìd} :: \code{character(1)}\cr +Identifier of resulting object, default "info" +\item \code{printer} :: \code{list} \cr +User input, specified printer-functions defined for a new object-classes or used to override their counterparts in the \code{original_printer} +\item \code{collect_multiplicity} :: \code{logical(1)}\cr +If \code{TRUE}, the input is a \code{\link{Multiplicity}} collecting channel. This means, a +\code{\link{Multiplicity}} input/output, instead of multiple normal inputs/outputs, is accepted and the members are aggregated. +\item \code{log_target} :: \code{character(1)}\cr +Specifies how the output is printed, can either be assigned to a logger with a specified level, or can be printer in the +format "message", "warning" or "cat". When the log_target is specified as "none", the input will be printed as is. +Has either he form \if{html}{\out{}}::\if{html}{\out{}}::\if{html}{\out{}} for logger output otherwise "message", "warning", "cat" or none. +} +} + +\section{Input and Output Channels}{ + +\code{PipeOpInfo} has one input channel called "input", it can take any type of input (\emph{) +\code{PipeOpInfo} has one output channel called "output", it can take any type of output (}) +} + +\section{State}{ + +The \verb{$state} is left empty (\code{list()}). +} + +\section{Fields}{ + +Fields inherited from \code{PipeOp}, as well as: +\itemize{ +\item \code{printer} :: \code{list}\cr +List that contains information on how a specific object-class should be printed to the console. +\item \code{log_target} :: \code{character(1)} \cr +Specifies how the printed console output should be displayed to the user. +} +} + +\section{Methods}{ + +Only methods inherited from \code{\link{PipeOp}}. +} + +\examples{ +library("mlr3") +poinfo = po("info") +poinfo$train(list(tsk("mtcars"))) +poinfo$predict(list(tsk("penguins"))) + +} +\seealso{ +https://mlr-org.com/pipeops.html + +Other PipeOps: +\code{\link{PipeOp}}, +\code{\link{PipeOpEncodePL}}, +\code{\link{PipeOpEnsemble}}, +\code{\link{PipeOpImpute}}, +\code{\link{PipeOpTargetTrafo}}, +\code{\link{PipeOpTaskPreproc}}, +\code{\link{PipeOpTaskPreprocSimple}}, +\code{\link{mlr_pipeops}}, +\code{\link{mlr_pipeops_adas}}, +\code{\link{mlr_pipeops_blsmote}}, +\code{\link{mlr_pipeops_boxcox}}, +\code{\link{mlr_pipeops_branch}}, +\code{\link{mlr_pipeops_chunk}}, +\code{\link{mlr_pipeops_classbalancing}}, +\code{\link{mlr_pipeops_classifavg}}, +\code{\link{mlr_pipeops_classweights}}, +\code{\link{mlr_pipeops_colapply}}, +\code{\link{mlr_pipeops_collapsefactors}}, +\code{\link{mlr_pipeops_colroles}}, +\code{\link{mlr_pipeops_copy}}, +\code{\link{mlr_pipeops_datefeatures}}, +\code{\link{mlr_pipeops_decode}}, +\code{\link{mlr_pipeops_encode}}, +\code{\link{mlr_pipeops_encodeimpact}}, +\code{\link{mlr_pipeops_encodelmer}}, +\code{\link{mlr_pipeops_encodeplquantiles}}, +\code{\link{mlr_pipeops_encodepltree}}, +\code{\link{mlr_pipeops_featureunion}}, +\code{\link{mlr_pipeops_filter}}, +\code{\link{mlr_pipeops_fixfactors}}, +\code{\link{mlr_pipeops_histbin}}, +\code{\link{mlr_pipeops_ica}}, +\code{\link{mlr_pipeops_imputeconstant}}, +\code{\link{mlr_pipeops_imputehist}}, +\code{\link{mlr_pipeops_imputelearner}}, +\code{\link{mlr_pipeops_imputemean}}, +\code{\link{mlr_pipeops_imputemedian}}, +\code{\link{mlr_pipeops_imputemode}}, +\code{\link{mlr_pipeops_imputeoor}}, +\code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_isomap}}, +\code{\link{mlr_pipeops_kernelpca}}, +\code{\link{mlr_pipeops_learner}}, +\code{\link{mlr_pipeops_learner_pi_cvplus}}, +\code{\link{mlr_pipeops_learner_quantiles}}, +\code{\link{mlr_pipeops_missind}}, +\code{\link{mlr_pipeops_modelmatrix}}, +\code{\link{mlr_pipeops_multiplicityexply}}, +\code{\link{mlr_pipeops_multiplicityimply}}, +\code{\link{mlr_pipeops_mutate}}, +\code{\link{mlr_pipeops_nearmiss}}, +\code{\link{mlr_pipeops_nmf}}, +\code{\link{mlr_pipeops_nop}}, +\code{\link{mlr_pipeops_ovrsplit}}, +\code{\link{mlr_pipeops_ovrunite}}, +\code{\link{mlr_pipeops_pca}}, +\code{\link{mlr_pipeops_proxy}}, +\code{\link{mlr_pipeops_quantilebin}}, +\code{\link{mlr_pipeops_randomprojection}}, +\code{\link{mlr_pipeops_randomresponse}}, +\code{\link{mlr_pipeops_regravg}}, +\code{\link{mlr_pipeops_removeconstants}}, +\code{\link{mlr_pipeops_renamecolumns}}, +\code{\link{mlr_pipeops_replicate}}, +\code{\link{mlr_pipeops_rowapply}}, +\code{\link{mlr_pipeops_scale}}, +\code{\link{mlr_pipeops_scalemaxabs}}, +\code{\link{mlr_pipeops_scalerange}}, +\code{\link{mlr_pipeops_select}}, +\code{\link{mlr_pipeops_smote}}, +\code{\link{mlr_pipeops_smotenc}}, +\code{\link{mlr_pipeops_spatialsign}}, +\code{\link{mlr_pipeops_subsample}}, +\code{\link{mlr_pipeops_targetinvert}}, +\code{\link{mlr_pipeops_targetmutate}}, +\code{\link{mlr_pipeops_targettrafoscalerange}}, +\code{\link{mlr_pipeops_textvectorizer}}, +\code{\link{mlr_pipeops_threshold}}, +\code{\link{mlr_pipeops_tomek}}, +\code{\link{mlr_pipeops_tunethreshold}}, +\code{\link{mlr_pipeops_unbranch}}, +\code{\link{mlr_pipeops_updatetarget}}, +\code{\link{mlr_pipeops_vtreat}}, +\code{\link{mlr_pipeops_yeojohnson}} +} +\concept{PipeOps} diff --git a/man/mlr_pipeops_isomap.Rd b/man/mlr_pipeops_isomap.Rd new file mode 100644 index 000000000..1beb68ed1 --- /dev/null +++ b/man/mlr_pipeops_isomap.Rd @@ -0,0 +1,173 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/PipeOpIsomap.R +\name{mlr_pipeops_isomap} +\alias{mlr_pipeops_isomap} +\alias{PipeOpIsomap} +\title{Algorithm for Dimensionality Reduction} +\format{ +\code{\link[R6:R6Class]{R6Class}} object inheriting from \code{\link{PipeOpTaskPreproc}} +} +\description{ +Algorithm for Dimensionality Reduction +} +\section{Construction}{ + + +\if{html}{\out{
}}\preformatted{PipeOpIsomap$new(id = "isomap", ...) +}\if{html}{\out{
}} +\itemize{ +\item \code{ìd} :: \code{character(1)}\cr +Identifier of resulting object, default \code{"isomap"} +\item \code{param_vals} :: named \code{list}\cr +List of hyperparameter settings, overwriting the hyperparameter settings that would otherwise be set during construction. Default \code{list()}. +} +} + +\section{Input and Output Channels}{ + +Input and output channels are inherited from \code{\link{PipeOpTaskPreproc}}. + +The output is the input \code{\link[mlr3:Task]{Task}} with the data projected on the lower dimension. +} + +\section{State}{ + +The \verb{$state} is a named \code{list} with the \verb{$state} elements inherited from \code{\link{PipeOpTaskPreproc}}, as well as: +\itemize{ +\item \code{embed_result} :: \code{dimRedResult}\cr +The resulting object after applying the "Isomap"-method from the dimRed package to the data. +} +} + +\section{Parameters}{ + +The parameters are the parameters inherited from \code{\link{PipeOpTaskPreproc}}, as well as: +\itemize{ +\item \code{knn} :: \code{numeric(1)}\cr +The number of nearest neighbors in the graph. +Initialized to 50. +\item \code{ndim} :: \code{numeric(1)}\cr +The number of embedding dimensions. +Initialized to 2. +\item \code{get_geod} :: \code{logical(1)}\cr +Determines whether the distance matrix should be kept in the \verb{$state} +Initialized to \code{FALSE}. +\item \code{.mute} :: \code{character}\cr +A character vector containing the elements you want to mute during training (c("message", "output")). +Initialized to \code{character(0)}. +} +} + +\section{Internals}{ + +Applies the Isomap Embedding from the \code{dimRed}-package. +} + +\section{Fields}{ + +Only fields inherited from \code{PipeOp}. +} + +\section{Methods}{ + +} + +\examples{ +library("mlr3") +library("dimRed") +po = po("isomap") +po$train(list(tsk("iris")))[[1]]$data() +po$predict(list(tsk("iris")))[[1]]$data() + + +} +\seealso{ +https://mlr-org.com/pipeops.html + +Other PipeOps: +\code{\link{PipeOp}}, +\code{\link{PipeOpEncodePL}}, +\code{\link{PipeOpEnsemble}}, +\code{\link{PipeOpImpute}}, +\code{\link{PipeOpTargetTrafo}}, +\code{\link{PipeOpTaskPreproc}}, +\code{\link{PipeOpTaskPreprocSimple}}, +\code{\link{mlr_pipeops}}, +\code{\link{mlr_pipeops_adas}}, +\code{\link{mlr_pipeops_blsmote}}, +\code{\link{mlr_pipeops_boxcox}}, +\code{\link{mlr_pipeops_branch}}, +\code{\link{mlr_pipeops_chunk}}, +\code{\link{mlr_pipeops_classbalancing}}, +\code{\link{mlr_pipeops_classifavg}}, +\code{\link{mlr_pipeops_classweights}}, +\code{\link{mlr_pipeops_colapply}}, +\code{\link{mlr_pipeops_collapsefactors}}, +\code{\link{mlr_pipeops_colroles}}, +\code{\link{mlr_pipeops_copy}}, +\code{\link{mlr_pipeops_datefeatures}}, +\code{\link{mlr_pipeops_decode}}, +\code{\link{mlr_pipeops_encode}}, +\code{\link{mlr_pipeops_encodeimpact}}, +\code{\link{mlr_pipeops_encodelmer}}, +\code{\link{mlr_pipeops_encodeplquantiles}}, +\code{\link{mlr_pipeops_encodepltree}}, +\code{\link{mlr_pipeops_featureunion}}, +\code{\link{mlr_pipeops_filter}}, +\code{\link{mlr_pipeops_fixfactors}}, +\code{\link{mlr_pipeops_histbin}}, +\code{\link{mlr_pipeops_ica}}, +\code{\link{mlr_pipeops_imputeconstant}}, +\code{\link{mlr_pipeops_imputehist}}, +\code{\link{mlr_pipeops_imputelearner}}, +\code{\link{mlr_pipeops_imputemean}}, +\code{\link{mlr_pipeops_imputemedian}}, +\code{\link{mlr_pipeops_imputemode}}, +\code{\link{mlr_pipeops_imputeoor}}, +\code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_kernelpca}}, +\code{\link{mlr_pipeops_learner}}, +\code{\link{mlr_pipeops_learner_pi_cvplus}}, +\code{\link{mlr_pipeops_learner_quantiles}}, +\code{\link{mlr_pipeops_missind}}, +\code{\link{mlr_pipeops_modelmatrix}}, +\code{\link{mlr_pipeops_multiplicityexply}}, +\code{\link{mlr_pipeops_multiplicityimply}}, +\code{\link{mlr_pipeops_mutate}}, +\code{\link{mlr_pipeops_nearmiss}}, +\code{\link{mlr_pipeops_nmf}}, +\code{\link{mlr_pipeops_nop}}, +\code{\link{mlr_pipeops_ovrsplit}}, +\code{\link{mlr_pipeops_ovrunite}}, +\code{\link{mlr_pipeops_pca}}, +\code{\link{mlr_pipeops_proxy}}, +\code{\link{mlr_pipeops_quantilebin}}, +\code{\link{mlr_pipeops_randomprojection}}, +\code{\link{mlr_pipeops_randomresponse}}, +\code{\link{mlr_pipeops_regravg}}, +\code{\link{mlr_pipeops_removeconstants}}, +\code{\link{mlr_pipeops_renamecolumns}}, +\code{\link{mlr_pipeops_replicate}}, +\code{\link{mlr_pipeops_rowapply}}, +\code{\link{mlr_pipeops_scale}}, +\code{\link{mlr_pipeops_scalemaxabs}}, +\code{\link{mlr_pipeops_scalerange}}, +\code{\link{mlr_pipeops_select}}, +\code{\link{mlr_pipeops_smote}}, +\code{\link{mlr_pipeops_smotenc}}, +\code{\link{mlr_pipeops_spatialsign}}, +\code{\link{mlr_pipeops_subsample}}, +\code{\link{mlr_pipeops_targetinvert}}, +\code{\link{mlr_pipeops_targetmutate}}, +\code{\link{mlr_pipeops_targettrafoscalerange}}, +\code{\link{mlr_pipeops_textvectorizer}}, +\code{\link{mlr_pipeops_threshold}}, +\code{\link{mlr_pipeops_tomek}}, +\code{\link{mlr_pipeops_tunethreshold}}, +\code{\link{mlr_pipeops_unbranch}}, +\code{\link{mlr_pipeops_updatetarget}}, +\code{\link{mlr_pipeops_vtreat}}, +\code{\link{mlr_pipeops_yeojohnson}} +} +\concept{PipeOps} diff --git a/man/mlr_pipeops_kernelpca.Rd b/man/mlr_pipeops_kernelpca.Rd index b18f5806f..2341e0fa5 100644 --- a/man/mlr_pipeops_kernelpca.Rd +++ b/man/mlr_pipeops_kernelpca.Rd @@ -129,6 +129,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, \code{\link{mlr_pipeops_learner_quantiles}}, diff --git a/man/mlr_pipeops_learner.Rd b/man/mlr_pipeops_learner.Rd index aab63683b..60ab68198 100644 --- a/man/mlr_pipeops_learner.Rd +++ b/man/mlr_pipeops_learner.Rd @@ -155,6 +155,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, \code{\link{mlr_pipeops_learner_quantiles}}, diff --git a/man/mlr_pipeops_learner_pi_cvplus.Rd b/man/mlr_pipeops_learner_pi_cvplus.Rd index 188718a80..18e4118bc 100644 --- a/man/mlr_pipeops_learner_pi_cvplus.Rd +++ b/man/mlr_pipeops_learner_pi_cvplus.Rd @@ -161,6 +161,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_quantiles}}, diff --git a/man/mlr_pipeops_learner_quantiles.Rd b/man/mlr_pipeops_learner_quantiles.Rd index 9acf72b50..4ad853fb3 100644 --- a/man/mlr_pipeops_learner_quantiles.Rd +++ b/man/mlr_pipeops_learner_quantiles.Rd @@ -146,6 +146,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_missind.Rd b/man/mlr_pipeops_missind.Rd index 578044460..79e422cf4 100644 --- a/man/mlr_pipeops_missind.Rd +++ b/man/mlr_pipeops_missind.Rd @@ -138,6 +138,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_modelmatrix.Rd b/man/mlr_pipeops_modelmatrix.Rd index f13f6f6e0..caebe9ae2 100644 --- a/man/mlr_pipeops_modelmatrix.Rd +++ b/man/mlr_pipeops_modelmatrix.Rd @@ -119,6 +119,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_multiplicityexply.Rd b/man/mlr_pipeops_multiplicityexply.Rd index 66f591560..ee54bfb7b 100644 --- a/man/mlr_pipeops_multiplicityexply.Rd +++ b/man/mlr_pipeops_multiplicityexply.Rd @@ -120,6 +120,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_multiplicityimply.Rd b/man/mlr_pipeops_multiplicityimply.Rd index 2ac6cce80..2b4e7d90b 100644 --- a/man/mlr_pipeops_multiplicityimply.Rd +++ b/man/mlr_pipeops_multiplicityimply.Rd @@ -126,6 +126,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_mutate.Rd b/man/mlr_pipeops_mutate.Rd index 8adb36b74..3cc178987 100644 --- a/man/mlr_pipeops_mutate.Rd +++ b/man/mlr_pipeops_mutate.Rd @@ -131,6 +131,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_nearmiss.Rd b/man/mlr_pipeops_nearmiss.Rd index 8d4898a66..1f17b9c5c 100644 --- a/man/mlr_pipeops_nearmiss.Rd +++ b/man/mlr_pipeops_nearmiss.Rd @@ -133,6 +133,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_nmf.Rd b/man/mlr_pipeops_nmf.Rd index c7b29b64c..bb74b0faf 100644 --- a/man/mlr_pipeops_nmf.Rd +++ b/man/mlr_pipeops_nmf.Rd @@ -171,6 +171,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_nop.Rd b/man/mlr_pipeops_nop.Rd index 7526ba53d..5e3118601 100644 --- a/man/mlr_pipeops_nop.Rd +++ b/man/mlr_pipeops_nop.Rd @@ -116,6 +116,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_ovrsplit.Rd b/man/mlr_pipeops_ovrsplit.Rd index 062e086f8..d007c61a6 100644 --- a/man/mlr_pipeops_ovrsplit.Rd +++ b/man/mlr_pipeops_ovrsplit.Rd @@ -133,6 +133,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_ovrunite.Rd b/man/mlr_pipeops_ovrunite.Rd index 3ce033902..04a2d6e47 100644 --- a/man/mlr_pipeops_ovrunite.Rd +++ b/man/mlr_pipeops_ovrunite.Rd @@ -128,6 +128,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_pca.Rd b/man/mlr_pipeops_pca.Rd index df34f6be2..0ef0aaba8 100644 --- a/man/mlr_pipeops_pca.Rd +++ b/man/mlr_pipeops_pca.Rd @@ -130,6 +130,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_proxy.Rd b/man/mlr_pipeops_proxy.Rd index d1b92cf65..04e79ef0e 100644 --- a/man/mlr_pipeops_proxy.Rd +++ b/man/mlr_pipeops_proxy.Rd @@ -138,6 +138,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_quantilebin.Rd b/man/mlr_pipeops_quantilebin.Rd index 3570d0503..d0b0a1b7d 100644 --- a/man/mlr_pipeops_quantilebin.Rd +++ b/man/mlr_pipeops_quantilebin.Rd @@ -118,6 +118,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_randomprojection.Rd b/man/mlr_pipeops_randomprojection.Rd index 486c91d5f..f93852549 100644 --- a/man/mlr_pipeops_randomprojection.Rd +++ b/man/mlr_pipeops_randomprojection.Rd @@ -130,6 +130,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_randomresponse.Rd b/man/mlr_pipeops_randomresponse.Rd index e3331d268..6e23eccd7 100644 --- a/man/mlr_pipeops_randomresponse.Rd +++ b/man/mlr_pipeops_randomresponse.Rd @@ -142,6 +142,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_regravg.Rd b/man/mlr_pipeops_regravg.Rd index 76fac8eb0..5d3a581c8 100644 --- a/man/mlr_pipeops_regravg.Rd +++ b/man/mlr_pipeops_regravg.Rd @@ -128,6 +128,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_removeconstants.Rd b/man/mlr_pipeops_removeconstants.Rd index 3da03d8ce..38615561d 100644 --- a/man/mlr_pipeops_removeconstants.Rd +++ b/man/mlr_pipeops_removeconstants.Rd @@ -118,6 +118,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_renamecolumns.Rd b/man/mlr_pipeops_renamecolumns.Rd index 131433937..c8f50fac2 100644 --- a/man/mlr_pipeops_renamecolumns.Rd +++ b/man/mlr_pipeops_renamecolumns.Rd @@ -117,6 +117,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_replicate.Rd b/man/mlr_pipeops_replicate.Rd index 9d015566d..421d6ba90 100644 --- a/man/mlr_pipeops_replicate.Rd +++ b/man/mlr_pipeops_replicate.Rd @@ -110,6 +110,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_rowapply.Rd b/man/mlr_pipeops_rowapply.Rd index 62226792b..8c1181953 100644 --- a/man/mlr_pipeops_rowapply.Rd +++ b/man/mlr_pipeops_rowapply.Rd @@ -116,6 +116,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_scale.Rd b/man/mlr_pipeops_scale.Rd index 3bf30b521..0c952e33c 100644 --- a/man/mlr_pipeops_scale.Rd +++ b/man/mlr_pipeops_scale.Rd @@ -137,6 +137,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_scalemaxabs.Rd b/man/mlr_pipeops_scalemaxabs.Rd index 011f75107..47479e3a1 100644 --- a/man/mlr_pipeops_scalemaxabs.Rd +++ b/man/mlr_pipeops_scalemaxabs.Rd @@ -107,6 +107,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_scalerange.Rd b/man/mlr_pipeops_scalerange.Rd index 48af7d223..1fcc165a3 100644 --- a/man/mlr_pipeops_scalerange.Rd +++ b/man/mlr_pipeops_scalerange.Rd @@ -117,6 +117,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_select.Rd b/man/mlr_pipeops_select.Rd index 7d678830b..b90ff608f 100644 --- a/man/mlr_pipeops_select.Rd +++ b/man/mlr_pipeops_select.Rd @@ -129,6 +129,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_smote.Rd b/man/mlr_pipeops_smote.Rd index 0bfd310db..399cceeb5 100644 --- a/man/mlr_pipeops_smote.Rd +++ b/man/mlr_pipeops_smote.Rd @@ -135,6 +135,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_smotenc.Rd b/man/mlr_pipeops_smotenc.Rd index 5a231bb2a..829f6467b 100644 --- a/man/mlr_pipeops_smotenc.Rd +++ b/man/mlr_pipeops_smotenc.Rd @@ -147,6 +147,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_spatialsign.Rd b/man/mlr_pipeops_spatialsign.Rd index efad79930..c9842065a 100644 --- a/man/mlr_pipeops_spatialsign.Rd +++ b/man/mlr_pipeops_spatialsign.Rd @@ -112,6 +112,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_subsample.Rd b/man/mlr_pipeops_subsample.Rd index 6cd121c46..f195253ba 100644 --- a/man/mlr_pipeops_subsample.Rd +++ b/man/mlr_pipeops_subsample.Rd @@ -137,6 +137,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_targetinvert.Rd b/man/mlr_pipeops_targetinvert.Rd index 33f65c50c..b1969fafc 100644 --- a/man/mlr_pipeops_targetinvert.Rd +++ b/man/mlr_pipeops_targetinvert.Rd @@ -107,6 +107,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_targetmutate.Rd b/man/mlr_pipeops_targetmutate.Rd index b348d1ce3..c04a09191 100644 --- a/man/mlr_pipeops_targetmutate.Rd +++ b/man/mlr_pipeops_targetmutate.Rd @@ -155,6 +155,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_targettrafoscalerange.Rd b/man/mlr_pipeops_targettrafoscalerange.Rd index 8400551c5..6190c8417 100644 --- a/man/mlr_pipeops_targettrafoscalerange.Rd +++ b/man/mlr_pipeops_targettrafoscalerange.Rd @@ -126,6 +126,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_textvectorizer.Rd b/man/mlr_pipeops_textvectorizer.Rd index d40503694..25a2c61a0 100644 --- a/man/mlr_pipeops_textvectorizer.Rd +++ b/man/mlr_pipeops_textvectorizer.Rd @@ -231,6 +231,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_threshold.Rd b/man/mlr_pipeops_threshold.Rd index d8aa2fa5c..543eadef2 100644 --- a/man/mlr_pipeops_threshold.Rd +++ b/man/mlr_pipeops_threshold.Rd @@ -120,6 +120,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_tomek.Rd b/man/mlr_pipeops_tomek.Rd index 7a3bee4bd..c43653cdc 100644 --- a/man/mlr_pipeops_tomek.Rd +++ b/man/mlr_pipeops_tomek.Rd @@ -126,6 +126,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_tunethreshold.Rd b/man/mlr_pipeops_tunethreshold.Rd index f2707ef05..4d097a638 100644 --- a/man/mlr_pipeops_tunethreshold.Rd +++ b/man/mlr_pipeops_tunethreshold.Rd @@ -146,6 +146,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_unbranch.Rd b/man/mlr_pipeops_unbranch.Rd index f79719aed..6c02d3cab 100644 --- a/man/mlr_pipeops_unbranch.Rd +++ b/man/mlr_pipeops_unbranch.Rd @@ -119,6 +119,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_updatetarget.Rd b/man/mlr_pipeops_updatetarget.Rd index 263b41ff3..8f8e23515 100644 --- a/man/mlr_pipeops_updatetarget.Rd +++ b/man/mlr_pipeops_updatetarget.Rd @@ -139,6 +139,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_vtreat.Rd b/man/mlr_pipeops_vtreat.Rd index c3b6a49bd..3525fdfa1 100644 --- a/man/mlr_pipeops_vtreat.Rd +++ b/man/mlr_pipeops_vtreat.Rd @@ -193,6 +193,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/man/mlr_pipeops_yeojohnson.Rd b/man/mlr_pipeops_yeojohnson.Rd index f1823e343..579c36c56 100644 --- a/man/mlr_pipeops_yeojohnson.Rd +++ b/man/mlr_pipeops_yeojohnson.Rd @@ -129,6 +129,8 @@ Other PipeOps: \code{\link{mlr_pipeops_imputemode}}, \code{\link{mlr_pipeops_imputeoor}}, \code{\link{mlr_pipeops_imputesample}}, +\code{\link{mlr_pipeops_info}}, +\code{\link{mlr_pipeops_isomap}}, \code{\link{mlr_pipeops_kernelpca}}, \code{\link{mlr_pipeops_learner}}, \code{\link{mlr_pipeops_learner_pi_cvplus}}, diff --git a/tests/testthat/test_pipeop_info.R b/tests/testthat/test_pipeop_info.R new file mode 100644 index 000000000..8c91ba971 --- /dev/null +++ b/tests/testthat/test_pipeop_info.R @@ -0,0 +1,173 @@ +context("PipeOpInfo") + + +##### pipeop$new ersetzen mit po("") + + +test_that("basic properties", { + po = po("info") + expect_pipeop(po) + expect_pipeop_class(PipeOpInfo, list(id = "info")) +}) + +test_that("check whether input and output are equal", { + skip_if_not_installed("rpart") + # Creation of Prediction Object + lrn_rpart = lrn("regr.rpart")$train(tsk("mtcars")) + mtcars_new = subset(mtcars[sample(nrow(mtcars), size = 10), ], select = -mpg) + prediction = lrn_rpart$predict_newdata(mtcars) + prediction_new = lrn_rpart$predict_newdata(mtcars_new) + # Actual Test + input = list(tsk("iris"), prediction, prediction_new, NULL, "default_string") + output = list("lgr::mlr3/mlr3pipelines::info", "cat", "warning", "message", "none") + for (j in input) { + for (i in seq_along(output)) { + poinfo = po("info", log_target = output[[i]]) + suppressMessages(suppressWarnings(invisible(utils::capture.output(expect_identical(poinfo$train(list(j))[[1]], j))))) + suppressMessages(suppressWarnings(invisible(utils::capture.output(expect_identical(poinfo$predict(list(j))[[1]], j))))) + } + } +}) + +test_that("console output type depending on log_target is correct", { + skip_if_not_installed("rpart") + # Creation of Prediction Object + lg = lgr::get_logger("mlr3") + old_threshold = lg$threshold + lg$set_threshold("info") + lrn_rpart = lrn("regr.rpart")$train(tsk("mtcars")) + mtcars_new = subset(mtcars[sample(nrow(mtcars), size = 10), ], select = -mpg) + prediction = lrn_rpart$predict_newdata(mtcars) + prediction_new = lrn_rpart$predict_newdata(mtcars_new) + # Actual Test + input = list(tsk("iris"), prediction, prediction_new, NULL, "default_string") + output = list("lgr::mlr3/mlr3pipelines::info", "cat", "warning", "message", "none") + expect_func = list(expect_output, expect_output, expect_warning, expect_message, expect_silent) + for (j in input) { + for (i in seq_along(output)) { + poinfo = po("info", log_target = output[[i]]) + expect_func[[i]](poinfo$train(list(j))) + expect_func[[i]](poinfo$predict(list(j))) + } + } + lg$set_threshold(old_threshold) +}) + +test_that("logger is addressed when log_target is set to a logger", { + skip_if_not_installed("rpart") + logger = lgr::get_logger("debug_logger") + logger$set_propagate(FALSE) + appender_buffer = lgr::AppenderBuffer$new() + logger$add_appender(appender_buffer, name = "appender") + # Creation of Prediction Object + lrn_rpart = lrn("regr.rpart")$train(tsk("mtcars")) + mtcars_new = subset(mtcars[sample(nrow(mtcars), size = 10), ], select = -mpg) + prediction = lrn_rpart$predict_newdata(mtcars) + prediction_new = lrn_rpart$predict_newdata(mtcars_new) + # Actual Test + poinfo = po("info", log_target = "lgr::debug_logger::info") + input = list(tsk("iris"), prediction, prediction_new, NULL, "default_string") + for (j in input) { + poinfo$train(list(j)) + logfile_posttrain = appender_buffer$data$msg + expect_match(logfile_posttrain, "Object passing through PipeOp info - Training", all = FALSE) + appender_buffer$flush() + poinfo$predict(list(j)) + logfile_postprediction = appender_buffer$data$msg + expect_match(logfile_postprediction, "Object passing through PipeOp info - Prediction", all = FALSE) + appender_buffer$flush() + } + logger$remove_appender(1) +}) + +test_that("PipeOp recognizes class of input objects and prints information accordingly", { + skip_if_not_installed("rpart") + # Creation of Prediction Object + lrn_rpart = lrn("regr.rpart")$train(tsk("mtcars")) + mtcars_new = subset(mtcars[sample(nrow(mtcars), size = 10), ], select = -mpg) + prediction = lrn_rpart$predict_newdata(mtcars) + prediction_new = lrn_rpart$predict_newdata(mtcars_new) + # Actual Test + input = list(tsk("iris"), prediction, prediction_new, NULL, "default_string") + output = list("cat", "warning", "message") + regex_list = list("\\$task.*\\$data", "\\$prediction.*\\$score", "\\$prediction", "NULL", "default_string") + for (j in seq_along(input)) { + for (i in seq_along(output)) { + poinfo = po("info", log_target = output[[i]]) + console_output_train = tryCatch(utils::capture.output(poinfo$train(list(input[[j]]))), + warning = function(w) as.character(conditionMessage(w)), + message = function(m) as.character(conditionMessage(m))) + expect_match(paste0(console_output_train, collapse = ""), regex_list[[j]], all = FALSE) + suppressMessages(suppressWarnings(utils::capture.output(poinfo$train(list(input[[j]]))))) + console_output_predict = tryCatch(utils::capture.output(poinfo$predict(list(input[[j]]))), + warning = function(w) as.character(conditionMessage(w)), + message = function(m) as.character(conditionMessage(m))) + expect_match(paste0(console_output_predict, collapse = ""), regex_list[[j]], all = FALSE) + } + } +}) + +test_that("malformed log_target handled accordingly", { + malformed_log_target = list("malformed", "::", "::::::", "log::", "log::log_level", "log::log_level::", "log::log_level::message::", "::log") + for (i in seq_along(malformed_log_target)) { + expect_error(po("info", log_target = malformed_log_target[[i]])) + } +}) + +test_that("original printer can be overwritten", { + skip_if_not_installed("rpart") + # Creation of Prediction Object + logger = lgr::get_logger("debug_logger") + logger$set_propagate(FALSE) + lrn_rpart = lrn("regr.rpart")$train(tsk("mtcars")) + prediction = lrn_rpart$predict_newdata(mtcars) + # Actual Test + input = list(tsk("iris"), prediction, NULL, "default_string") + output = list("cat", "warning", "message") + regex_list = list("azbycxdw", "azbycxdwev", "azbycxdwevfu", "azbycxdwevfugt") + for (j in seq_along(input)) { + for (i in seq_along(output)) { + poinfo = po("info", log_target = output[[i]], + printer = list(Task = function(x) "azbycxdw", + Prediction = function(x) "azbycxdwev", + `NULL` = function(x) "azbycxdwevfu", + default = function(x) "azbycxdwevfugt" + )) + console_output_train = tryCatch(utils::capture.output(poinfo$train(list(input[[j]]))), + warning = function(w) conditionMessage(w), + message = function(m) conditionMessage(m)) + expect_match(console_output_train, regex_list[[j]], all = FALSE) + console_output_predict = tryCatch({ + utils::capture.output(poinfo$train(list(input[[j]]))) + utils::capture.output(poinfo$predict(list(input[[j]]))) + }, + warning = function(w) conditionMessage(w), + message = function(m) conditionMessage(m)) + expect_match(console_output_predict, regex_list[[j]], all = FALSE) + } + } +}) + +test_that("handling of multiplicity objects controlled by field collect_multiplicity", { + poovr = po("ovrsplit") + OVR = poovr$train(list(tsk("iris"))) + # Actual Test + output = list("cat", "warning", "message") + collect_multiplicity = list(TRUE, FALSE) + test_string = list("xyz", "abc") + input = list(OVR, list(OVR)) + for (i in seq_along(output)) { + for (j in seq_along(collect_multiplicity)) { + poinfo = po("info", collect_multiplicity = collect_multiplicity[[j]], log_target = output[[i]], printer = list(default = function(x) "abc", Multiplicity = function(x) "xyz")) + console_output_train = tryCatch(utils::capture.output(poinfo$train(input[[j]])), + warning = function(w) conditionMessage(w), + message = function(m) conditionMessage(m)) + expect_match(paste0(console_output_train, collapse = ""), test_string[[j]], all = FALSE) + suppressMessages(suppressWarnings(utils::capture.output(poinfo$train(input[[j]])))) + console_output_predict = tryCatch(utils::capture.output(poinfo$predict(input[[j]])), + warning = function(w) conditionMessage(w), + message = function(m) conditionMessage(m)) + expect_match(paste0(console_output_predict, collapse = ""), test_string[[j]], all = FALSE) + } + } +}) diff --git a/tests/testthat/test_pipeop_isomap.R b/tests/testthat/test_pipeop_isomap.R new file mode 100644 index 000000000..c8c1e7ac2 --- /dev/null +++ b/tests/testthat/test_pipeop_isomap.R @@ -0,0 +1,91 @@ +context("PipeOpIsomap") + +test_that("PipeOpIsomap - basic properties", { + skip_if_not_installed("dimRed") + skip_if_not_installed("stats") + op = po("isomap", .mute = "message") + task = mlr_tasks$get("iris") + expect_pipeop(op) + expect_datapreproc_pipeop_class(PipeOpIsomap, task = task, predict_like_train = FALSE, deterministic_predict = FALSE) +}) + +test_that("compare to dimRed::isomap", { + skip_if_not_installed("dimRed") + skip_if_not_installed("stats") + # Part 1 - Train-method + # Version 1 - PipeOpIsomap + task = tsk("iris") + po = po("isomap", knn = 50) + pipeop_result_train = po$train(list(task))[[1]]$data() + pipeop_iso_train = pipeop_result_train[, grepl("^iso \\d", colnames(pipeop_result_train)), with = FALSE] + pipeop_meta_train = pipeop_result_train[, !grepl("^iso \\d", colnames(pipeop_result_train)), with = FALSE] + # Version 2 - dimRed package + data = dimRed::loadDataSet("Iris") + dimRed_result_train = dimRed::embed(data, "Isomap", knn = 50) + + expect_equal(as.matrix(pipeop_iso_train), dimRed_result_train@data@data) + expect_equal(as.data.frame(pipeop_meta_train), dimRed_result_train@data@meta) + + # Part 2 - Predict-method + # Version 1 - PipeOpIsomap + pipeop_result_predict = po$predict(list(task))[[1]]$data() + pipeop_iso_predict = pipeop_result_predict[, grepl("^iso \\d", colnames(pipeop_result_predict)), with = FALSE] + pipeop_meta_predict = pipeop_result_predict[, !grepl("^iso \\d", colnames(pipeop_result_predict)), with = FALSE] + # Version 2 - dimRed package + dimRed_result_predict = selectMethod("predict", "dimRedResult")(dimRed_result_train, data) + + expect_equal(as.matrix(pipeop_iso_predict), dimRed_result_predict@data, tolerance = 0.001) + expect_equal(as.data.frame(pipeop_meta_predict), dimRed_result_predict@meta) +}) + +test_that("isomap algorithm requires data to be numeric", { + skip_if_not_installed("dimRed") + skip_if_not_installed("stats") + po = po("isomap") + task = tsk("penguins") + task$filter(which(complete.cases(task$data()))) + expect_error(po$train(list(task))) +}) + +test_that("hyperparameter ndim", { + skip_if_not_installed("dimRed") + skip_if_not_installed("stats") + for (i in seq_len(length(tsk("iris")$feature_names))) { + po = po("isomap", ndim = i) + expect_equal(length(po$train(list(tsk("iris")))[[1]]$feature_names), i) + expect_equal(length(po$predict(list(tsk("iris")))[[1]]$feature_names), i) + } +}) + +test_that("hyperparameter get_geod", { + skip_if_not_installed("dimRed") + skip_if_not_installed("stats") + # Check 1 - get_geod = FALSE behaves as expected + po_no_geod = po("isomap", get_geod = FALSE) + po_no_geod$train(list(tsk("iris"))) + expect_equal(po_no_geod$state$embed_result@other.data, list()) + + # Check 2 - get_geod = TRUE behaves as expected + po_geod = po("isomap", get_geod = TRUE) + po_geod$train(list(tsk("iris"))) + # obtain geodistance matrix from original isomap embedding + emb1 = dimRed::embed(dimRed::loadDataSet("Iris"), "Isomap", get_geod = TRUE) + expect_equal(po_geod$state$embed_result@other.data, emb1@other.data) +}) + +# test_that("hyperparameter .mute", { +# browser() +# skip_if_not_installed("dimRed") +# skip_if_not_installed("stats") +# po = po("isomap", .mute = c("message", "output")) +# expect_silent(po$train(list(tsk("iris")))) +# }) + + +# why does it fail +# po_message = po("isomap") +# po_message$train(list(tsk("iris"))) + +# po_no_message = po("isomap", .mute = c("message", "output")) +# po_no_message$train(list(tsk("iris"))) +# po_no_message$predict(list(tsk("iris")))