From d6166b05ea289f574057fe2e39d973935fddc483 Mon Sep 17 00:00:00 2001 From: mb706 Date: Tue, 12 Aug 2025 14:23:56 +0200 Subject: [PATCH 01/10] progress --- .lintr | 3 +- DESCRIPTION | 1 + R/Filter.R | 88 ++++------------------------ R/FilterAUC.R | 7 +-- R/FilterAnova.R | 6 +- R/FilterBoruta.R | 12 ++-- R/FilterCMIM.R | 9 +-- R/FilterCarScore.R | 6 +- R/FilterCarSurvScore.R | 6 +- R/FilterCorrelation.R | 10 +--- R/FilterDISR.R | 9 +-- R/FilterFindCorrelation.R | 13 +--- R/FilterImportance.R | 23 +------- R/FilterInformationGain.R | 9 +-- R/FilterJMI.R | 9 +-- R/FilterJMIM.R | 9 +-- R/FilterKruskalTest.R | 10 +--- R/FilterLearner.R | 39 +++++++----- R/FilterLearnerPerformance.R | 57 ++++++++++++++++++ R/FilterMIM.R | 9 +-- R/FilterMRMR.R | 9 +-- R/FilterNJMIM.R | 9 +-- R/FilterPerformance.R | 35 +++-------- R/FilterPermutation.R | 66 +++++---------------- R/FilterRelief.R | 9 +-- R/FilterSelectedFeatures.R | 23 +------- R/FilterUnivariateCox.R | 6 +- R/FilterVariance.R | 10 +--- R/zzz.R | 2 + man/Filter.Rd | 84 ++++---------------------- man/flt.Rd | 10 ---- man/mlr_filters_anova.Rd | 4 +- man/mlr_filters_auc.Rd | 4 +- man/mlr_filters_boruta.Rd | 4 +- man/mlr_filters_carscore.Rd | 4 +- man/mlr_filters_carsurvscore.Rd | 4 +- man/mlr_filters_cmim.Rd | 4 +- man/mlr_filters_correlation.Rd | 4 +- man/mlr_filters_disr.Rd | 4 +- man/mlr_filters_find_correlation.Rd | 4 +- man/mlr_filters_importance.Rd | 14 +---- man/mlr_filters_information_gain.Rd | 4 +- man/mlr_filters_jmi.Rd | 4 +- man/mlr_filters_jmim.Rd | 4 +- man/mlr_filters_kruskal_test.Rd | 4 +- man/mlr_filters_mim.Rd | 4 +- man/mlr_filters_mrmr.Rd | 4 +- man/mlr_filters_njmim.Rd | 4 +- man/mlr_filters_performance.Rd | 19 +----- man/mlr_filters_permutation.Rd | 32 +--------- man/mlr_filters_relief.Rd | 4 +- man/mlr_filters_selected_features.Rd | 14 +---- man/mlr_filters_univariate_cox.Rd | 6 +- man/mlr_filters_variance.Rd | 4 +- 54 files changed, 215 insertions(+), 540 deletions(-) create mode 100644 R/FilterLearnerPerformance.R diff --git a/.lintr b/.lintr index d5ba821c..d5ded88a 100644 --- a/.lintr +++ b/.lintr @@ -5,6 +5,7 @@ linters: linters_with_defaults( object_name_linter = object_name_linter(c("snake_case", "CamelCase")), # only allow snake case and camel case object names cyclocomp_linter = NULL, # do not check function complexity commented_code_linter = NULL, # allow code in comments - line_length_linter = line_length_linter(120) + line_length_linter = line_length_linter(120), + indentation_linter = indentation_linter(indent = 2, hanging_indent_style = "never") ) diff --git a/DESCRIPTION b/DESCRIPTION index 0d5910eb..c26ad6ca 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -71,6 +71,7 @@ Collate: 'FilterJMI.R' 'FilterJMIM.R' 'FilterKruskalTest.R' + 'FilterLearnerPerformance.R' 'FilterMIM.R' 'FilterMRMR.R' 'FilterNJMIM.R' diff --git a/R/Filter.R b/R/Filter.R index c4fc6d73..7e5796c0 100644 --- a/R/Filter.R +++ b/R/Filter.R @@ -17,16 +17,6 @@ #' @export Filter = R6Class("Filter", public = list( - #' @field id (`character(1)`)\cr - #' Identifier of the object. - #' Used in tables, plot and text output. - id = NULL, - - #' @field label (`character(1)`)\cr - #' Label for this object. - #' Can be used in tables, plot and text output instead of the ID. - label = NA_character_, - #' @field task_types (`character()`)\cr #' Set of supported task types, e.g. `"classif"` or `"regr"`. #' Can be set to the scalar value `NA` to allow any task type. @@ -39,23 +29,10 @@ Filter = R6Class("Filter", #' [mlr3::Task]task properties. task_properties = NULL, - #' @field param_set ([paradox::ParamSet])\cr - #' Set of hyperparameters. - param_set = NULL, - #' @field feature_types (`character()`)\cr #' Feature types of the filter. feature_types = NULL, - #' @field packages ([character()])\cr - #' Packages which this filter is relying on. - packages = NULL, - - #' @field man (`character(1)`)\cr - #' String in the format `[pkg]::[topic]` pointing to a manual page for this object. - #' Defaults to `NA`, but can be set by child classes. - man = NULL, - #' @field scores #' Stores the calculated filter score values as named numeric vector. #' The vector is sorted in decreasing order with possible `NA` values @@ -90,31 +67,27 @@ Filter = R6Class("Filter", #' String in the format `[pkg]::[topic]` pointing to a manual page for #' this object. The referenced help package can be opened via method #' `$help()`. - initialize = function(id, task_types, task_properties = character(), - param_set = ps(), feature_types = character(), packages = character(), label = NA_character_, - man = NA_character_) { + initialize = function(dict_entry, task_types, task_properties = character(0), + param_set = ps(), feature_types = character(0), packages = character(0), + properties = character(0), label, man, id = dict_entry + ) { + if (!missing(label) || !missing(man)) { + deprecated_component("label and man are deprecated for Filter construction and will be removed in the future.") + } + + super$initialize(dict_entry = dict_entry, dict_shortaccess = "flt", id = id, + param_set = param_set, packages = packages, properties = properties) - self$id = assert_string(id) - self$label = assert_string(label, na.ok = TRUE) if (!test_scalar_na(task_types)) { # we allow any task type here, otherwise we are not able to construct # the filter without loading additional packages like mlr3proba assert_character(task_types, any.missing = FALSE) } + assert_subset(properties, mlr_reflections$filter_properties) # only allow missings for now self$task_types = task_types self$task_properties = assert_subset(task_properties, unlist(mlr_reflections$task_properties, use.names = FALSE)) - self$param_set = assert_param_set(param_set) self$feature_types = assert_subset(feature_types, mlr_reflections$task_feature_types) - self$packages = assert_character(packages, any.missing = FALSE, min.chars = 1L) self$scores = set_names(numeric(), character()) - self$man = assert_string(man, na.ok = TRUE) - }, - - #' @description - #' Format helper for Filter class - #' @param ... (ignored). - format = function(...) { - sprintf("<%s:%s>", class(self)[1L], self$id) # nocov }, #' @description @@ -133,12 +106,6 @@ Filter = R6Class("Filter", } }, - #' @description - #' Opens the corresponding help page referenced by field `$man`. - help = function() { - open_help(self$man) # nocov - }, - #' @description #' Calculates the filter score values for the provided [mlr3::Task] and #' stores them in field `scores`. `nfeat` determines the minimum number of @@ -200,39 +167,6 @@ Filter = R6Class("Filter", invisible(self) } - ), - - active = list( - #' @field properties ([character()])\cr - #' Properties of the filter. Currently, only `"missings"` is supported. - #' A filter has the property `"missings"`, iff the filter can handle missing values - #' in the features in a graceful way. Otherwise, an assertion is thrown if missing - #' values are detected. - properties = function(rhs) { - assert_ro_binding(rhs) - get_properties = get0(".get_properties", private) - if (is.null(get_properties)) character() else get_properties() - }, - - #' @field hash (`character(1)`)\cr - #' Hash (unique identifier) for this object. - hash = function(rhs) { - assert_ro_binding(rhs) - calculate_hash(class(self), self$id, self$param_set$values, mget(private$.extra_hash, envir = self)) - }, - - #' @field phash (`character(1)`)\cr - #' Hash (unique identifier) for this partial object, excluding some components - #' which are varied systematically during tuning (parameter values) or feature - #' selection (feature names). - phash = function(rhs) { - assert_ro_binding(rhs) - calculate_hash(class(self), self$id, mget(private$.extra_hash, envir = self)) - } - ), - - private = list( - .extra_hash = character() ) ) diff --git a/R/FilterAUC.R b/R/FilterAUC.R index 9acf9719..c2191e9d 100644 --- a/R/FilterAUC.R +++ b/R/FilterAUC.R @@ -43,13 +43,10 @@ FilterAUC = R6Class("FilterAUC", #' @description Create a FilterAUC object. initialize = function() { super$initialize( - id = "auc", + dict_entry = "auc", task_types = "classif", task_properties = "twoclass", - feature_types = c("integer", "numeric"), - packages = "mlr3measures", - label = "Area Under the ROC Curve Score", - man = "mlr3filters::mlr_filters_auc" + feature_types = c("integer", "numeric") ) } ), diff --git a/R/FilterAnova.R b/R/FilterAnova.R index 1961d57c..bbd89835 100644 --- a/R/FilterAnova.R +++ b/R/FilterAnova.R @@ -47,12 +47,10 @@ FilterAnova = R6Class("FilterAnova", #' @description Create a FilterAnova object. initialize = function() { super$initialize( - id = "anova", + dict_entry = "anova", packages = "stats", feature_types = c("integer", "numeric"), - task_types = "classif", - label = "ANOVA F-Test", - man = "mlr3filters::mlr_filters_anova" + task_types = "classif" ) } ), diff --git a/R/FilterBoruta.R b/R/FilterBoruta.R index 9c088dfb..8651a7ab 100644 --- a/R/FilterBoruta.R +++ b/R/FilterBoruta.R @@ -49,20 +49,16 @@ FilterBoruta = R6Class("FilterBoruta", doTrace = p_int(lower = 0, upper = 4, default = 0), holdHistory = p_lgl(default = TRUE), getImp = p_uty(), - keep = p_fct(levels = c("confirmed", "tentative"), default = "confirmed"), - num.threads = p_int(lower = 1, default = 1) + keep = p_fct(levels = c("confirmed", "tentative"), tags = "required", init = "confirmed"), + num.threads = p_int(lower = 1, default = 2, init = 1) ) - param_set$set_values(keep = "confirmed", num.threads = 1) - super$initialize( - id = "boruta", + dict_entry = "boruta", task_types = c("regr", "classif"), param_set = param_set, packages = "Boruta", - feature_types = c("integer", "numeric"), - label = "Burota", - man = "mlr3filters::mlr_filters_boruta" + feature_types = c("integer", "numeric") ) } ), diff --git a/R/FilterCMIM.R b/R/FilterCMIM.R index 7f374e3f..20ceb3d9 100644 --- a/R/FilterCMIM.R +++ b/R/FilterCMIM.R @@ -46,18 +46,15 @@ FilterCMIM = R6Class("FilterCMIM", #' @description Create a FilterCMIM object. initialize = function() { param_set = ps( - threads = p_int(lower = 0L, default = 0L, tags = "threads") + threads = p_int(lower = 0L, default = 0L, tags = "threads", init = 1L) ) - param_set$values = list(threads = 1L) super$initialize( - id = "cmim", + dict_entry = "cmim", task_types = c("classif", "regr"), param_set = param_set, feature_types = c("integer", "numeric", "factor", "ordered"), - packages = "praznik", - label = "Minimal Conditional Mutual Information Maximization", - man = "mlr3filters::mlr_filters_cmim" + packages = "praznik" ) } ), diff --git a/R/FilterCarScore.R b/R/FilterCarScore.R index 4254ee01..73631d69 100644 --- a/R/FilterCarScore.R +++ b/R/FilterCarScore.R @@ -53,13 +53,11 @@ FilterCarScore = R6Class("FilterCarScore", param_set$values = list(verbose = FALSE) super$initialize( - id = "carscore", + dict_entry = "carscore", task_types = "regr", param_set = param_set, feature_types = c("logical", "integer", "numeric"), - packages = "care", - label = "Correlation-Adjusted coRrelation Score", - man = "mlr3filters::mlr_filters_carscore" + packages = "care" ) } ), diff --git a/R/FilterCarSurvScore.R b/R/FilterCarSurvScore.R index 172cb2e4..dfa9c02f 100644 --- a/R/FilterCarSurvScore.R +++ b/R/FilterCarSurvScore.R @@ -24,13 +24,11 @@ FilterCarSurvScore = R6Class("FilterCarSurvScore", denom = p_fct(c("1/n", "sum_w"), default = "1/n") ) super$initialize( - id = "surv.carsurvscore", + dict_entry = "carsurvscore", packages = c("carSurv", "mlr3proba"), param_set = ps, feature_types = c("integer", "numeric"), - task_types = "surv", - label = "Correlation-Adjusted coRrelation Survival Score", - man = "mlr3filters::mlr_filters_carsurvscore" + task_types = "surv" ) } ), diff --git a/R/FilterCorrelation.R b/R/FilterCorrelation.R index 2da9580e..0954d295 100644 --- a/R/FilterCorrelation.R +++ b/R/FilterCorrelation.R @@ -60,13 +60,12 @@ FilterCorrelation = R6Class("FilterCorrelation", ) super$initialize( - id = "correlation", + dict_entry = "correlation", task_types = "regr", param_set = param_set, feature_types = c("integer", "numeric"), packages = "stats", - label = "Correlation", - man = "mlr3filters::mlr_filters_correlation" + properties = "missings" ) } ), @@ -80,12 +79,7 @@ FilterCorrelation = R6Class("FilterCorrelation", y = as.matrix(task$truth()), .args = pv)[, 1L] set_names(abs(score), fn) - }, - - .get_properties = function() { - "missings" } - ) ) diff --git a/R/FilterDISR.R b/R/FilterDISR.R index 5adeb8e3..1d904b3f 100644 --- a/R/FilterDISR.R +++ b/R/FilterDISR.R @@ -46,18 +46,15 @@ FilterDISR = R6Class("FilterDISR", #' @description Create a FilterDISR object. initialize = function() { param_set = ps( - threads = p_int(lower = 0L, default = 0L, tags = "threads") + threads = p_int(lower = 0L, default = 0L, tags = "threads", init = 1L) ) - param_set$values = list(threads = 1L) super$initialize( - id = "disr", + dict_entry = "disr", task_types = c("classif", "regr"), param_set = param_set, feature_types = c("integer", "numeric", "factor", "ordered"), - packages = "praznik", - label = "Double Input Symmetrical Relevance", - man = "mlr3filters::mlr_filters_disr" + packages = "praznik" ) } ), diff --git a/R/FilterFindCorrelation.R b/R/FilterFindCorrelation.R index 20a7e6f8..baf2a3d5 100644 --- a/R/FilterFindCorrelation.R +++ b/R/FilterFindCorrelation.R @@ -55,13 +55,12 @@ FilterFindCorrelation = R6Class("FilterFindCorrelation", ) super$initialize( - id = "find_correlation", + dict_entry = "find_correlation", task_types = NA_character_, param_set = param_set, feature_types = c("integer", "numeric"), packages = "stats", - label = "Correlation-based Score", - man = "mlr3filters::mlr_filters_find_correlation" + properties = "missings" ) } ), @@ -94,14 +93,6 @@ FilterFindCorrelation = R6Class("FilterFindCorrelation", # The following has the correct names and values, BUT we need scores in # reverse order. Shift by 1 to get positive values. 1 - apply(cm, 2, max) - }, - .get_properties = function() { - use = self$param_set$values$use %??% "everything" - if (use %in% c("complete.obs", "pairwise.complete.obs")) { - "missings" - } else { - character(0) - } } ) ) diff --git a/R/FilterImportance.R b/R/FilterImportance.R index 6aae6a56..72e746b8 100644 --- a/R/FilterImportance.R +++ b/R/FilterImportance.R @@ -38,26 +38,13 @@ FilterImportance = R6Class("FilterImportance", inherit = FilterLearner, public = list( - - #' @field learner ([mlr3::Learner])\cr - #' Learner to extract the importance values from. - learner = NULL, - #' @description Create a FilterImportance object. #' @param learner ([mlr3::Learner])\cr #' Learner to extract the importance values from. - initialize = function(learner = mlr3::lrn("classif.featureless")) { - self$learner = learner = assert_learner(as_learner(learner, clone = TRUE), - properties = "importance") - + initialize = function(learner) { super$initialize( - id = "importance", - task_types = learner$task_type, - feature_types = learner$feature_types, - packages = learner$packages, - param_set = learner$param_set, - label = "Importance Score", - man = "mlr3filters::mlr_filters_importance" + learner = assert_learner(as_learner(learner, clone = TRUE), properties = "importance"), + dict_entry = "importance" ) } ), @@ -68,10 +55,6 @@ FilterImportance = R6Class("FilterImportance", learner = self$learner$clone(deep = TRUE) learner = learner$train(task = task) learner$base_learner()$importance() - }, - - .get_properties = function() { - intersect("missings", self$learner$properties) } ) ) diff --git a/R/FilterInformationGain.R b/R/FilterInformationGain.R index 508db661..60b8edcf 100644 --- a/R/FilterInformationGain.R +++ b/R/FilterInformationGain.R @@ -61,13 +61,12 @@ FilterInformationGain = R6Class("FilterInformationGain", ) super$initialize( - id = "information_gain", + dict_entry = "information_gain", task_types = c("classif", "regr"), param_set = param_set, feature_types = c("integer", "numeric", "factor", "ordered"), packages = "FSelectorRcpp", - label = "Information Gain", - man = "mlr3filters::mlr_filters_information_gain" + properties = "missings" ) } ), @@ -82,10 +81,6 @@ FilterInformationGain = R6Class("FilterInformationGain", y = task$truth() scores = invoke(FSelectorRcpp::information_gain, x = x, y = y, .args = pv) set_names(scores$importance, scores$attributes) - }, - - .get_properties = function() { - "missings" } ) ) diff --git a/R/FilterJMI.R b/R/FilterJMI.R index 1f60cf7e..e7a5cef8 100644 --- a/R/FilterJMI.R +++ b/R/FilterJMI.R @@ -47,18 +47,15 @@ FilterJMI = R6Class("FilterJMI", #' @description Create a FilterJMI object. initialize = function() { param_set = ps( - threads = p_int(lower = 0L, default = 0L, tags = "threads") + threads = p_int(lower = 0L, default = 0L, tags = "threads", init = 1L) ) - param_set$values = list(threads = 1L) super$initialize( - id = "jmi", + dict_entry = "jmi", task_types = c("classif", "regr"), param_set = param_set, packages = "praznik", - feature_types = c("integer", "numeric", "factor", "ordered"), - label = "Joint Mutual Information", - man = "mlr3filters::mlr_filters_jmi" + feature_types = c("integer", "numeric", "factor", "ordered") ) } ), diff --git a/R/FilterJMIM.R b/R/FilterJMIM.R index 835a18c1..d797c3ce 100644 --- a/R/FilterJMIM.R +++ b/R/FilterJMIM.R @@ -46,17 +46,14 @@ FilterJMIM = R6Class("FilterJMIM", #' @description Create a FilterJMIM object. initialize = function() { param_set = ps( - threads = p_int(lower = 0L, default = 0L, tags = "threads") + threads = p_int(lower = 0L, default = 0L, tags = "threads", init = 1L) ) - param_set$values = list(threads = 1L) super$initialize( - id = "jmim", + dict_entry = "jmim", task_types = c("classif", "regr"), param_set = param_set, packages = "praznik", - feature_types = c("integer", "numeric", "factor", "ordered"), - label = "Minimal Joint Mutual Information Maximization", - man = "mlr3filters::mlr_filters_jmim" + feature_types = c("integer", "numeric", "factor", "ordered") ) } ), diff --git a/R/FilterKruskalTest.R b/R/FilterKruskalTest.R index b7a0c32e..91b164f7 100644 --- a/R/FilterKruskalTest.R +++ b/R/FilterKruskalTest.R @@ -59,13 +59,12 @@ FilterKruskalTest = R6Class("FilterKruskalTest", ) super$initialize( - id = "kruskal_test", + dict_entry = "kruskal_test", task_types = "classif", param_set = param_set, packages = "stats", feature_types = c("integer", "numeric"), - label = "Kruskal-Wallis Test", - man = "mlr3filters::mlr_filters_kruskal_test" + properties = "missings" ) } ), @@ -86,11 +85,6 @@ FilterKruskalTest = R6Class("FilterKruskalTest", kruskal.test(x = x, g = g, na.action = na_action)$p.value } })) - }, - - .get_properties = function() { - ok = c("na.omit", "na.exclude") - if ((self$param_set$values$na.action %??% "na.omit") %in% ok) "missings" else character() } ) ) diff --git a/R/FilterLearner.R b/R/FilterLearner.R index ce025c92..112af7a1 100644 --- a/R/FilterLearner.R +++ b/R/FilterLearner.R @@ -1,20 +1,31 @@ #' @include Filter.R FilterLearner = R6Class("FilterLearner", inherit = Filter, + public = list( + initialize = function(learner, dict_entry) { + private$.learner = learner + super$initialize( + id = learner$id, + dict_entry = dict_entry, + task_types = learner$task_type, + feature_types = learner$feature_types, + packages = learner$packages, + properties = intersect("missings", learner$properties), + param_set = alist(private$.learner$param_set) + ) + } + ), active = list( - #' @field hash (`character(1)`)\cr - #' Hash (unique identifier) for this object. - hash = function(rhs) { - assert_ro_binding(rhs) - calculate_hash(class(self), self$id, self$param_set$values, self$learner$hash) - }, - - #' @field phash (`character(1)`)\cr - #' Hash (unique identifier) for this partial object, excluding some components - #' which are varied systematically during tuning (parameter values) or feature - #' selection (feature names). - phash = function(rhs) { - assert_ro_binding(rhs) - calculate_hash(class(self), self$id, self$learner$hash) + #' @field learner ([mlr3::Learner])\cr + #' Learner to extract the importance values from. + learner = function(rhs) { + if (!missing(rhs) && !identical(rhs, private$.learner)) { + stop("Cannot modify read-only field 'learner'") + } + private$.learner } + ), + private = list( + .learner = NULL, + .additional_phash_input = function() private$.learner$phash ) ) diff --git a/R/FilterLearnerPerformance.R b/R/FilterLearnerPerformance.R new file mode 100644 index 00000000..4f0275a5 --- /dev/null +++ b/R/FilterLearnerPerformance.R @@ -0,0 +1,57 @@ +#' @include Filter.R +FilterLearnerPerformance = R6Class("FilterLearnerPerformance", inherit = Filter, + public = list( + initialize = function(learner, resampling, measure, dict_entry, additional_param_set = ps()) { + private$.learner = learner + private$.resampling = resampling + private$.measure = measure + private$.additional_param_set = assert_param_set(additional_param_set) + super$initialize( + id = learner$id, + dict_entry = dict_entry, + task_types = learner$task_type, + feature_types = learner$feature_types, + packages = c(learner$packages, resampling$packages, measure$packages), + properties = intersect("missings", learner$properties), + param_set = alist( + lrn = private$.learner$param_set, rsmp = private$.resampling$param_set, + msr = private$.measure$param_set, + private$.additional_param_set + ) + ) + } + ), + active = list( + #' @field learner ([mlr3::Learner])\cr + #' Learner to extract the importance values from. + learner = function(rhs) { + if (!missing(rhs) && !identical(rhs, private$.learner)) { + stop("Cannot modify read-only field 'learner'") + } + private$.learner + }, + #' @field resampling ([mlr3::Resampling])\cr + #' Resampling to be used for performance evaluation. + resampling = function(rhs) { + if (!missing(rhs) && !identical(rhs, private$.resampling)) { + stop("Cannot modify read-only field 'resampling'") + } + private$.resampling + }, + #' @field measure ([mlr3::Measure])\cr + #' Measure to be used for performance evaluation. + measure = function(rhs) { + if (!missing(rhs) && !identical(rhs, private$.measure)) { + stop("Cannot modify read-only field 'measure'") + } + private$.measure + } + ), + private = list( + .learner = NULL, + .resampling = NULL, + .measure = NULL, + .additional_param_set = NULL, + .additional_phash_input = function() c(private$.learner$phash, private$.resampling$phash, private$.measure$phash) + ) +) diff --git a/R/FilterMIM.R b/R/FilterMIM.R index 3c83d333..4d574f65 100644 --- a/R/FilterMIM.R +++ b/R/FilterMIM.R @@ -46,18 +46,15 @@ FilterMIM = R6Class("FilterMIM", #' @description Create a FilterMIM object. initialize = function() { param_set = ps( - threads = p_int(lower = 0L, default = 0L, tags = "threads") + threads = p_int(lower = 0L, default = 0L, tags = "threads", init = 1L) ) - param_set$values = list(threads = 1L) super$initialize( - id = "mim", + dict_entry = "mim", task_types = c("classif", "regr"), param_set = param_set, packages = "praznik", - feature_types = c("integer", "numeric", "factor", "ordered"), - label = "Mutual Information Maximization", - man = "mlr3filters::mlr_filters_mim" + feature_types = c("integer", "numeric", "factor", "ordered") ) } ), diff --git a/R/FilterMRMR.R b/R/FilterMRMR.R index aa69abde..65e80f12 100644 --- a/R/FilterMRMR.R +++ b/R/FilterMRMR.R @@ -46,18 +46,15 @@ FilterMRMR = R6Class("FilterMRMR", #' @description Create a FilterMRMR object. initialize = function() { param_set = ps( - threads = p_int(lower = 0L, default = 0L, tags = "threads") + threads = p_int(lower = 0L, default = 0L, tags = "threads", init = 1L) ) - param_set$values = list(threads = 1L) super$initialize( - id = "mrmr", + dict_entry = "mrmr", task_types = c("classif", "regr"), param_set = param_set, packages = "praznik", - feature_types = c("integer", "numeric", "factor", "ordered"), - label = "Minimum Redundancy Maximal Relevancy", - man = "mlr3filters::mlr_filters_mrmr" + feature_types = c("integer", "numeric", "factor", "ordered") ) } ), diff --git a/R/FilterNJMIM.R b/R/FilterNJMIM.R index 2e0ac05b..1248f9c0 100644 --- a/R/FilterNJMIM.R +++ b/R/FilterNJMIM.R @@ -46,17 +46,14 @@ FilterNJMIM = R6Class("FilterNJMIM", #' @description Create a FilterNJMIM object. initialize = function() { param_set = ps( - threads = p_int(lower = 0L, default = 0L, tags = "threads") + threads = p_int(lower = 0L, default = 0L, tags = "threads", init = 1L) ) - param_set$values = list(threads = 1L) super$initialize( - id = "njmim", + dict_entry = "njmim", task_types = c("classif", "regr"), param_set = param_set, packages = "praznik", - feature_types = c("integer", "numeric", "factor", "ordered"), - label = "Minimal Normalised Joint Mutual Information Maximization", - man = "mlr3filters::mlr_filters_njmim" + feature_types = c("integer", "numeric", "factor", "ordered") ) } ), diff --git a/R/FilterPerformance.R b/R/FilterPerformance.R index 49369f15..2b6471c2 100644 --- a/R/FilterPerformance.R +++ b/R/FilterPerformance.R @@ -34,17 +34,10 @@ #' graph$train(task) #' } FilterPerformance = R6Class("FilterPerformance", - inherit = FilterLearner, + inherit = FilterLearnerPerformance, public = list( - #' @field learner ([mlr3::Learner])\cr - learner = NULL, - #' @field resampling ([mlr3::Resampling])\cr - resampling = NULL, - #' @field measure ([mlr3::Measure])\cr - measure = NULL, - #' @description Create a FilterDISR object. #' @param learner ([mlr3::Learner])\cr #' [mlr3::Learner] to use for model fitting. @@ -52,23 +45,17 @@ FilterPerformance = R6Class("FilterPerformance", #' [mlr3::Resampling] to be used within resampling. #' @param measure ([mlr3::Measure])\cr #' [mlr3::Measure] to be used for evaluating the performance. - initialize = function(learner = mlr3::lrn("classif.featureless"), - resampling = mlr3::rsmp("holdout"), measure = NULL) { + initialize = function(learner, resampling = mlr3::rsmp("holdout"), measure = NULL) { - self$learner = learner = assert_learner(as_learner(learner, clone = TRUE)) - self$resampling = assert_resampling(as_resampling(resampling)) - self$measure = assert_measure(as_measure(measure, - task_type = learner$task_type), learner = learner) - packages = unique(c(self$learner$packages, self$measure$packages)) + learner = assert_learner(as_learner(learner, clone = TRUE)) + resampling = assert_resampling(as_resampling(resampling, clone = TRUE)) + measure = assert_measure(as_measure(measure, task_type = learner$task_type, clone = TRUE), learner = learner) super$initialize( - id = "performance", - task_types = learner$task_type, - param_set = learner$param_set, - feature_types = learner$feature_types, - packages = packages, - label = "Predictive Performance", - man = "mlr3filters::mlr_filters_performance" + dict_entry = "performance", + learner = learner, + resampling = resampling, + measure = measure ) } ), @@ -89,10 +76,6 @@ FilterPerformance = R6Class("FilterPerformance", } set_names(perf, fn) - }, - - .get_properties = function() { - intersect("missings", self$learner$properties) } ) ) diff --git a/R/FilterPermutation.R b/R/FilterPermutation.R index fb0b9592..7d17d151 100644 --- a/R/FilterPermutation.R +++ b/R/FilterPermutation.R @@ -19,7 +19,7 @@ #' } #' #' @family Filter -#' @include FilterLearner.R +#' @include FilterLearnerPerformance.R #' @template seealso_filter #' @export #' @examples @@ -46,16 +46,9 @@ #' graph$train(task) #' } FilterPermutation = R6Class("FilterPermutation", - inherit = FilterLearner, + inherit = FilterLearnerPerformance, public = list( - #' @field learner ([mlr3::Learner])\cr - learner = NULL, - #' @field resampling ([mlr3::Resampling])\cr - resampling = NULL, - #' @field measure ([mlr3::Measure])\cr - measure = NULL, - #' @description Create a FilterPermutation object. #' @param learner ([mlr3::Learner])\cr #' [mlr3::Learner] to use for model fitting. @@ -63,57 +56,33 @@ FilterPermutation = R6Class("FilterPermutation", #' [mlr3::Resampling] to be used within resampling. #' @param measure ([mlr3::Measure])\cr #' [mlr3::Measure] to be used for evaluating the performance. - initialize = function(learner = mlr3::lrn("classif.featureless"), resampling = mlr3::rsmp("holdout"), - measure = NULL) { + initialize = function(learner, resampling = mlr3::rsmp("holdout"), measure = NULL) { - param_set = ps( + additional_param_set = ps( standardize = p_lgl(default = FALSE), nmc = p_int(lower = 1L, default = 50L) ) - self$learner = learner = assert_learner(as_learner(learner, clone = TRUE)) - self$resampling = assert_resampling(as_resampling(resampling), instantiated = FALSE) - self$measure = assert_measure(as_measure(measure, - task_type = learner$task_type, clone = TRUE), learner = learner) - packages = unique(c(self$learner$packages, self$measure$packages)) + learner = assert_learner(as_learner(learner, clone = TRUE)) + resampling = assert_resampling(as_resampling(resampling, clone = TRUE), instantiated = FALSE) + measure = assert_measure(as_measure(measure, task_type = learner$task_type, clone = TRUE), learner = learner) super$initialize( - id = "permutation", - task_types = learner$task_type, - feature_types = learner$feature_types, - packages = packages, - param_set = param_set, - label = "Permutation Score", - man = "mlr3filters::mlr_filters_performance" + dict_entry = "permutation", + learner = learner, + resampling = resampling, + measure = measure, + additional_param_set = additional_param_set ) } ), - active = list( - #' @field hash (`character(1)`)\cr - #' Hash (unique identifier) for this object. - hash = function(rhs) { - assert_ro_binding(rhs) - calculate_hash(class(self), self$id, self$param_set$values, self$learner$hash, - self$resampling$hash, self$measure$hash) - }, - - #' @field phash (`character(1)`)\cr - #' Hash (unique identifier) for this partial object, excluding some components - #' which are varied systematically during tuning (parameter values) or feature - #' selection (feature names). - phash = function(rhs) { - assert_ro_binding(rhs) - calculate_hash(class(self), self$id, self$learner$hash, self$resampling$hash, - self$measure$hash) - } - ), - private = list( .calculate = function(task, nfeat) { task = task$clone() fn = task$feature_names - nmc = self$param_set$values$nmc %??% 50L + + nmc = private$.additional_param_set$values$nmc %??% 50L backend = task$backend rr = resample(task, self$learner, self$resampling) @@ -145,18 +114,13 @@ FilterPermutation = R6Class("FilterPermutation", delta = -delta } - if (!isTRUE(self$param_set$values$standardize)) { + if (!isTRUE(private$.additional_param_set$values$standardize)) { delta = delta / max(delta) } delta - }, - - .get_properties = function() { - intersect("missings", self$learner$properties) } ) - ) #' @include mlr_filters.R diff --git a/R/FilterRelief.R b/R/FilterRelief.R index a0ea8fb2..e39dff6e 100644 --- a/R/FilterRelief.R +++ b/R/FilterRelief.R @@ -50,22 +50,17 @@ FilterRelief = R6Class("FilterRelief", ) super$initialize( - id = "relief", + dict_entry = "relief", task_types = c("classif", "regr"), param_set = param_set, feature_types = c("integer", "numeric", "factor", "ordered"), packages = "FSelectorRcpp", - label = "RELIEF", - man = "mlr3filters::mlr_filters_relief" + properties = "missings" ) } ), private = list( - .get_properties = function() { - "missings" - }, - .calculate = function(task, nfeat) { pv = self$param_set$values diff --git a/R/FilterSelectedFeatures.R b/R/FilterSelectedFeatures.R index d5a2e2f9..bda697b6 100644 --- a/R/FilterSelectedFeatures.R +++ b/R/FilterSelectedFeatures.R @@ -46,26 +46,13 @@ FilterSelectedFeatures = R6Class("FilterSelectedFeatures", inherit = FilterLearner, public = list( - - #' @field learner ([mlr3::Learner])\cr - #' Learner to extract the importance values from. - learner = NULL, - #' @description Create a FilterImportance object. #' @param learner ([mlr3::Learner])\cr #' Learner to extract the selected features from. - initialize = function(learner = mlr3::lrn("classif.featureless")) { - self$learner = learner = assert_learner(as_learner(learner, clone = TRUE), - properties = "selected_features") - + initialize = function(learner) { super$initialize( - id = "selected_features", - task_types = learner$task_type, - feature_types = learner$feature_types, - packages = learner$packages, - param_set = learner$param_set, - label = "Embedded Feature Selection", - man = "mlr3filters::mlr_filters_selected_features" + learner = assert_learner(as_learner(learner, clone = TRUE), properties = "selected_features"), + dict_entry = "selected_features" ) } ), @@ -76,10 +63,6 @@ FilterSelectedFeatures = R6Class("FilterSelectedFeatures", learner = learner$train(task = task) score = named_vector(task$feature_names, init = 0) replace(score, names(score) %in% learner$selected_features(), 1) - }, - - .get_properties = function() { - intersect("missings", self$learner$properties) } ) ) diff --git a/R/FilterUnivariateCox.R b/R/FilterUnivariateCox.R index 34de7250..c4660249 100644 --- a/R/FilterUnivariateCox.R +++ b/R/FilterUnivariateCox.R @@ -33,13 +33,11 @@ FilterUnivariateCox = R6Class("FilterUnivariateCox", #' @description Create a FilterUnivariateCox object. initialize = function() { super$initialize( - id = "surv.univariate_cox", + dict_entry = "univariate_cox", packages = "survival", param_set = ps(), feature_types = c("integer", "numeric", "logical"), - task_types = "surv", - label = "Univariate Cox Survival Score", - man = "mlr3filters::mlr_filters_univariate_cox" + task_types = "surv" ) } ), diff --git a/R/FilterVariance.R b/R/FilterVariance.R index 569ccd91..6fc60c53 100644 --- a/R/FilterVariance.R +++ b/R/FilterVariance.R @@ -44,16 +44,14 @@ FilterVariance = R6Class("FilterVariance", param_set = ps( na.rm = p_lgl(default = TRUE) ) - param_set$values = list(na.rm = TRUE) super$initialize( - id = "variance", + dict_entry = "variance", task_types = NA_character_, param_set = param_set, packages = "stats", feature_types = c("integer", "numeric"), - label = "Variance", - man = "mlr3filters::mlr_filters_variance" + properties = "missings" ) } ), @@ -62,10 +60,6 @@ FilterVariance = R6Class("FilterVariance", .calculate = function(task, nfeat) { na_rm = self$param_set$values$na.rm %??% TRUE map_dbl(task$data(cols = task$feature_names), var, na.rm = na_rm) - }, - - .get_properties = function() { - if (isTRUE(self$param_set$values$na.rm)) "missings" else character() } ) ) diff --git a/R/zzz.R b/R/zzz.R index 3339f433..dea757fd 100644 --- a/R/zzz.R +++ b/R/zzz.R @@ -10,6 +10,8 @@ .onLoad = function(libname, pkgname) { # nolint # nocov start + x = utils::getFromNamespace("mlr_reflections", ns = "mlr3") + x$filter_properties = "missings" # only allow missings for now backports::import(pkgname) } # nocov end diff --git a/man/Filter.Rd b/man/Filter.Rd index 175bf863..2fd8dd5b 100644 --- a/man/Filter.Rd +++ b/man/Filter.Rd @@ -47,14 +47,6 @@ Other Filter: \section{Public fields}{ \if{html}{\out{
}} \describe{ -\item{\code{id}}{(\code{character(1)})\cr -Identifier of the object. -Used in tables, plot and text output.} - -\item{\code{label}}{(\code{character(1)})\cr -Label for this object. -Can be used in tables, plot and text output instead of the ID.} - \item{\code{task_types}}{(\code{character()})\cr Set of supported task types, e.g. \code{"classif"} or \code{"regr"}. Can be set to the scalar value \code{NA} to allow any task type. @@ -65,19 +57,9 @@ see \code{\link[mlr3:mlr_reflections]{mlr_reflections$task_types$type}}.} \item{\code{task_properties}}{(\code{character()})\cr \link[mlr3:Task]{mlr3::Task}task properties.} -\item{\code{param_set}}{(\link[paradox:ParamSet]{paradox::ParamSet})\cr -Set of hyperparameters.} - \item{\code{feature_types}}{(\code{character()})\cr Feature types of the filter.} -\item{\code{packages}}{(\code{\link[=character]{character()}})\cr -Packages which this filter is relying on.} - -\item{\code{man}}{(\code{character(1)})\cr -String in the format \verb{[pkg]::[topic]} pointing to a manual page for this object. -Defaults to \code{NA}, but can be set by child classes.} - \item{\code{scores}}{Stores the calculated filter score values as named numeric vector. The vector is sorted in decreasing order with possible \code{NA} values last. The more important the feature, the higher the score. @@ -86,32 +68,11 @@ non-deterministic order.} } \if{html}{\out{
}} } -\section{Active bindings}{ -\if{html}{\out{
}} -\describe{ -\item{\code{properties}}{(\code{\link[=character]{character()}})\cr -Properties of the filter. Currently, only \code{"missings"} is supported. -A filter has the property \code{"missings"}, iff the filter can handle missing values -in the features in a graceful way. Otherwise, an assertion is thrown if missing -values are detected.} - -\item{\code{hash}}{(\code{character(1)})\cr -Hash (unique identifier) for this object.} - -\item{\code{phash}}{(\code{character(1)})\cr -Hash (unique identifier) for this partial object, excluding some components -which are varied systematically during tuning (parameter values) or feature -selection (feature names).} -} -\if{html}{\out{
}} -} \section{Methods}{ \subsection{Public methods}{ \itemize{ \item \href{#method-Filter-new}{\code{Filter$new()}} -\item \href{#method-Filter-format}{\code{Filter$format()}} \item \href{#method-Filter-print}{\code{Filter$print()}} -\item \href{#method-Filter-help}{\code{Filter$help()}} \item \href{#method-Filter-calculate}{\code{Filter$calculate()}} \item \href{#method-Filter-clone}{\code{Filter$clone()}} } @@ -123,23 +84,22 @@ selection (feature names).} Create a Filter object. \subsection{Usage}{ \if{html}{\out{
}}\preformatted{Filter$new( - id, + dict_entry, task_types, - task_properties = character(), + task_properties = character(0), param_set = ps(), - feature_types = character(), - packages = character(), - label = NA_character_, - man = NA_character_ + feature_types = character(0), + packages = character(0), + properties = character(0), + label, + man, + id = dict_entry )}\if{html}{\out{
}} } \subsection{Arguments}{ \if{html}{\out{
}} \describe{ -\item{\code{id}}{(\code{character(1)})\cr -Identifier for the filter.} - \item{\code{task_types}}{(\code{character()})\cr Types of the task the filter can operator on. E.g., \code{"classif"} or \code{"regr"}. Can be set to scalar \code{NA} to allow any task type.} @@ -169,23 +129,9 @@ Label for the new instance.} String in the format \verb{[pkg]::[topic]} pointing to a manual page for this object. The referenced help package can be opened via method \verb{$help()}.} -} -\if{html}{\out{
}} -} -} -\if{html}{\out{
}} -\if{html}{\out{}} -\if{latex}{\out{\hypertarget{method-Filter-format}{}}} -\subsection{Method \code{format()}}{ -Format helper for Filter class -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Filter$format(...)}\if{html}{\out{
}} -} -\subsection{Arguments}{ -\if{html}{\out{
}} -\describe{ -\item{\code{...}}{(ignored).} +\item{\code{id}}{(\code{character(1)})\cr +Identifier for the filter.} } \if{html}{\out{
}} } @@ -199,16 +145,6 @@ Printer for Filter class \if{html}{\out{
}}\preformatted{Filter$print()}\if{html}{\out{
}} } -} -\if{html}{\out{
}} -\if{html}{\out{}} -\if{latex}{\out{\hypertarget{method-Filter-help}{}}} -\subsection{Method \code{help()}}{ -Opens the corresponding help page referenced by field \verb{$man}. -\subsection{Usage}{ -\if{html}{\out{
}}\preformatted{Filter$help()}\if{html}{\out{
}} -} - } \if{html}{\out{
}} \if{html}{\out{}} diff --git a/man/flt.Rd b/man/flt.Rd index a0991cad..e7de3901 100644 --- a/man/flt.Rd +++ b/man/flt.Rd @@ -9,16 +9,6 @@ flt(.key, ...) flts(.keys, ...) } -\arguments{ -\item{.key}{(\code{character(1)})\cr -Key passed to the respective \link[mlr3misc:Dictionary]{dictionary} to retrieve the object.} - -\item{...}{(any)\cr -Additional arguments.} - -\item{.keys}{(\code{character()})\cr -Keys passed to the respective \link[mlr3misc:Dictionary]{dictionary} to retrieve multiple objects.} -} \value{ \link{Filter}. } diff --git a/man/mlr_filters_anova.Rd b/man/mlr_filters_anova.Rd index ca7d56c7..418898f8 100644 --- a/man/mlr_filters_anova.Rd +++ b/man/mlr_filters_anova.Rd @@ -43,7 +43,7 @@ Bommert A, Sun X, Bischl B, Rahnenführer J, Lang M (2020). } \seealso{ \itemize{ -\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -88,8 +88,6 @@ Other Filter:
Inherited methods
diff --git a/man/mlr_filters_auc.Rd b/man/mlr_filters_auc.Rd index c44d5612..5b870216 100644 --- a/man/mlr_filters_auc.Rd +++ b/man/mlr_filters_auc.Rd @@ -39,7 +39,7 @@ Bommert A, Sun X, Bischl B, Rahnenführer J, Lang M (2020). } \seealso{ \itemize{ -\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -84,8 +84,6 @@ Other Filter:
Inherited methods
diff --git a/man/mlr_filters_boruta.Rd b/man/mlr_filters_boruta.Rd index 7674d73b..c1bf6556 100644 --- a/man/mlr_filters_boruta.Rd +++ b/man/mlr_filters_boruta.Rd @@ -41,7 +41,7 @@ Kursa MB, Rudnicki WR (2010). } \seealso{ \itemize{ -\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -86,8 +86,6 @@ Other Filter:
Inherited methods
diff --git a/man/mlr_filters_carscore.Rd b/man/mlr_filters_carscore.Rd index 703346ee..18c52c02 100644 --- a/man/mlr_filters_carscore.Rd +++ b/man/mlr_filters_carscore.Rd @@ -41,7 +41,7 @@ if (mlr3misc::require_namespaces(c("mlr3pipelines", "care", "rpart"), quietly = } \seealso{ \itemize{ -\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -86,8 +86,6 @@ Other Filter:
Inherited methods
diff --git a/man/mlr_filters_carsurvscore.Rd b/man/mlr_filters_carsurvscore.Rd index 44293869..e4226609 100644 --- a/man/mlr_filters_carsurvscore.Rd +++ b/man/mlr_filters_carsurvscore.Rd @@ -17,7 +17,7 @@ Bommert A, Welchowski T, Schmid M, Rahnenführer J (2021). } \seealso{ \itemize{ -\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -62,8 +62,6 @@ Other Filter:
Inherited methods
diff --git a/man/mlr_filters_cmim.Rd b/man/mlr_filters_cmim.Rd index 7cb8326d..cd473d93 100644 --- a/man/mlr_filters_cmim.Rd +++ b/man/mlr_filters_cmim.Rd @@ -54,7 +54,7 @@ Bommert A, Sun X, Bischl B, Rahnenführer J, Lang M (2020). } \seealso{ \itemize{ -\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -99,8 +99,6 @@ Other Filter:
Inherited methods
diff --git a/man/mlr_filters_correlation.Rd b/man/mlr_filters_correlation.Rd index 1a19abae..79406d2e 100644 --- a/man/mlr_filters_correlation.Rd +++ b/man/mlr_filters_correlation.Rd @@ -50,7 +50,7 @@ Bommert A, Sun X, Bischl B, Rahnenführer J, Lang M (2020). } \seealso{ \itemize{ -\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -95,8 +95,6 @@ Other Filter:
Inherited methods
diff --git a/man/mlr_filters_disr.Rd b/man/mlr_filters_disr.Rd index ed2a3f44..a9a2a722 100644 --- a/man/mlr_filters_disr.Rd +++ b/man/mlr_filters_disr.Rd @@ -54,7 +54,7 @@ Bommert A, Sun X, Bischl B, Rahnenführer J, Lang M (2020). } \seealso{ \itemize{ -\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -99,8 +99,6 @@ Other Filter:
Inherited methods
diff --git a/man/mlr_filters_find_correlation.Rd b/man/mlr_filters_find_correlation.Rd index bd3b25d4..a40558e9 100644 --- a/man/mlr_filters_find_correlation.Rd +++ b/man/mlr_filters_find_correlation.Rd @@ -43,7 +43,7 @@ if (mlr3misc::require_namespaces(c("mlr3pipelines", "rpart"), quietly = TRUE)) { } \seealso{ \itemize{ -\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -88,8 +88,6 @@ Other Filter:
Inherited methods
diff --git a/man/mlr_filters_importance.Rd b/man/mlr_filters_importance.Rd index 9daa4667..a746ea24 100644 --- a/man/mlr_filters_importance.Rd +++ b/man/mlr_filters_importance.Rd @@ -36,7 +36,7 @@ if (mlr3misc::require_namespaces(c("mlr3pipelines", "rpart", "mlr3learners"), qu } \seealso{ \itemize{ -\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -70,14 +70,6 @@ Other Filter: \section{Super classes}{ \code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{mlr3filters::FilterLearner} -> \code{FilterImportance} } -\section{Public fields}{ -\if{html}{\out{
}} -\describe{ -\item{\code{learner}}{(\link[mlr3:Learner]{mlr3::Learner})\cr -Learner to extract the importance values from.} -} -\if{html}{\out{
}} -} \section{Methods}{ \subsection{Public methods}{ \itemize{ @@ -89,8 +81,6 @@ Learner to extract the importance values from.}
Inherited methods
@@ -101,7 +91,7 @@ Learner to extract the importance values from.} \subsection{Method \code{new()}}{ Create a FilterImportance object. \subsection{Usage}{ -\if{html}{\out{
}}\preformatted{FilterImportance$new(learner = mlr3::lrn("classif.featureless"))}\if{html}{\out{
}} +\if{html}{\out{
}}\preformatted{FilterImportance$new(learner)}\if{html}{\out{
}} } \subsection{Arguments}{ diff --git a/man/mlr_filters_information_gain.Rd b/man/mlr_filters_information_gain.Rd index 71d90726..1da0c4ca 100644 --- a/man/mlr_filters_information_gain.Rd +++ b/man/mlr_filters_information_gain.Rd @@ -47,7 +47,7 @@ if (mlr3misc::require_namespaces(c("mlr3pipelines", "FSelectorRcpp", "rpart"), q } \seealso{ \itemize{ -\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -92,8 +92,6 @@ Other Filter:
Inherited methods
diff --git a/man/mlr_filters_jmi.Rd b/man/mlr_filters_jmi.Rd index 05d6a144..3ff41c54 100644 --- a/man/mlr_filters_jmi.Rd +++ b/man/mlr_filters_jmi.Rd @@ -54,7 +54,7 @@ Bommert A, Sun X, Bischl B, Rahnenführer J, Lang M (2020). } \seealso{ \itemize{ -\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -99,8 +99,6 @@ Other Filter:
Inherited methods
diff --git a/man/mlr_filters_jmim.Rd b/man/mlr_filters_jmim.Rd index efbfd86a..13afcf95 100644 --- a/man/mlr_filters_jmim.Rd +++ b/man/mlr_filters_jmim.Rd @@ -54,7 +54,7 @@ Bommert A, Sun X, Bischl B, Rahnenführer J, Lang M (2020). } \seealso{ \itemize{ -\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -99,8 +99,6 @@ Other Filter:
Inherited methods
diff --git a/man/mlr_filters_kruskal_test.Rd b/man/mlr_filters_kruskal_test.Rd index 7f43fc59..12a50877 100644 --- a/man/mlr_filters_kruskal_test.Rd +++ b/man/mlr_filters_kruskal_test.Rd @@ -50,7 +50,7 @@ Bommert A, Sun X, Bischl B, Rahnenführer J, Lang M (2020). } \seealso{ \itemize{ -\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -95,8 +95,6 @@ Other Filter:
Inherited methods
diff --git a/man/mlr_filters_mim.Rd b/man/mlr_filters_mim.Rd index bff488b6..580818d2 100644 --- a/man/mlr_filters_mim.Rd +++ b/man/mlr_filters_mim.Rd @@ -54,7 +54,7 @@ Bommert A, Sun X, Bischl B, Rahnenführer J, Lang M (2020). } \seealso{ \itemize{ -\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -99,8 +99,6 @@ Other Filter:
Inherited methods
diff --git a/man/mlr_filters_mrmr.Rd b/man/mlr_filters_mrmr.Rd index 98cd4aba..2fa4663f 100644 --- a/man/mlr_filters_mrmr.Rd +++ b/man/mlr_filters_mrmr.Rd @@ -54,7 +54,7 @@ Bommert A, Sun X, Bischl B, Rahnenführer J, Lang M (2020). } \seealso{ \itemize{ -\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -99,8 +99,6 @@ Other Filter:
Inherited methods
diff --git a/man/mlr_filters_njmim.Rd b/man/mlr_filters_njmim.Rd index 522add2d..6948e0c5 100644 --- a/man/mlr_filters_njmim.Rd +++ b/man/mlr_filters_njmim.Rd @@ -54,7 +54,7 @@ Bommert A, Sun X, Bischl B, Rahnenführer J, Lang M (2020). } \seealso{ \itemize{ -\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -99,8 +99,6 @@ Other Filter:
Inherited methods
diff --git a/man/mlr_filters_performance.Rd b/man/mlr_filters_performance.Rd index c35aff7f..b3efe110 100644 --- a/man/mlr_filters_performance.Rd +++ b/man/mlr_filters_performance.Rd @@ -35,7 +35,7 @@ if (mlr3misc::require_namespaces(c("mlr3pipelines", "rpart"), quietly = TRUE)) { } \seealso{ \itemize{ -\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -67,18 +67,7 @@ Other Filter: } \concept{Filter} \section{Super classes}{ -\code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{mlr3filters::FilterLearner} -> \code{FilterPerformance} -} -\section{Public fields}{ -\if{html}{\out{
}} -\describe{ -\item{\code{learner}}{(\link[mlr3:Learner]{mlr3::Learner})\cr} - -\item{\code{resampling}}{(\link[mlr3:Resampling]{mlr3::Resampling})\cr} - -\item{\code{measure}}{(\link[mlr3:Measure]{mlr3::Measure})\cr} -} -\if{html}{\out{
}} +\code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{mlr3filters::FilterLearnerPerformance} -> \code{FilterPerformance} } \section{Methods}{ \subsection{Public methods}{ @@ -91,8 +80,6 @@ Other Filter:
Inherited methods
@@ -104,7 +91,7 @@ Other Filter: Create a FilterDISR object. \subsection{Usage}{ \if{html}{\out{
}}\preformatted{FilterPerformance$new( - learner = mlr3::lrn("classif.featureless"), + learner, resampling = mlr3::rsmp("holdout"), measure = NULL )}\if{html}{\out{
}} diff --git a/man/mlr_filters_permutation.Rd b/man/mlr_filters_permutation.Rd index d04dfadd..6a1a99fc 100644 --- a/man/mlr_filters_permutation.Rd +++ b/man/mlr_filters_permutation.Rd @@ -48,7 +48,7 @@ if (mlr3misc::require_namespaces(c("mlr3pipelines", "rpart"), quietly = TRUE)) { } \seealso{ \itemize{ -\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -80,31 +80,7 @@ Other Filter: } \concept{Filter} \section{Super classes}{ -\code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{mlr3filters::FilterLearner} -> \code{FilterPermutation} -} -\section{Public fields}{ -\if{html}{\out{
}} -\describe{ -\item{\code{learner}}{(\link[mlr3:Learner]{mlr3::Learner})\cr} - -\item{\code{resampling}}{(\link[mlr3:Resampling]{mlr3::Resampling})\cr} - -\item{\code{measure}}{(\link[mlr3:Measure]{mlr3::Measure})\cr} -} -\if{html}{\out{
}} -} -\section{Active bindings}{ -\if{html}{\out{
}} -\describe{ -\item{\code{hash}}{(\code{character(1)})\cr -Hash (unique identifier) for this object.} - -\item{\code{phash}}{(\code{character(1)})\cr -Hash (unique identifier) for this partial object, excluding some components -which are varied systematically during tuning (parameter values) or feature -selection (feature names).} -} -\if{html}{\out{
}} +\code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{mlr3filters::FilterLearnerPerformance} -> \code{FilterPermutation} } \section{Methods}{ \subsection{Public methods}{ @@ -117,8 +93,6 @@ selection (feature names).}
Inherited methods
@@ -130,7 +104,7 @@ selection (feature names).} Create a FilterPermutation object. \subsection{Usage}{ \if{html}{\out{
}}\preformatted{FilterPermutation$new( - learner = mlr3::lrn("classif.featureless"), + learner, resampling = mlr3::rsmp("holdout"), measure = NULL )}\if{html}{\out{
}} diff --git a/man/mlr_filters_relief.Rd b/man/mlr_filters_relief.Rd index 14a52ff6..27673b41 100644 --- a/man/mlr_filters_relief.Rd +++ b/man/mlr_filters_relief.Rd @@ -39,7 +39,7 @@ if (mlr3misc::require_namespaces(c("mlr3pipelines", "FSelectorRcpp", "rpart"), q } \seealso{ \itemize{ -\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -84,8 +84,6 @@ Other Filter:
Inherited methods
diff --git a/man/mlr_filters_selected_features.Rd b/man/mlr_filters_selected_features.Rd index d6119ffc..dd831634 100644 --- a/man/mlr_filters_selected_features.Rd +++ b/man/mlr_filters_selected_features.Rd @@ -43,7 +43,7 @@ if (mlr3misc::require_namespaces(c("mlr3pipelines", "mlr3learners", "rpart"), qu } \seealso{ \itemize{ -\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -77,14 +77,6 @@ Other Filter: \section{Super classes}{ \code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{mlr3filters::FilterLearner} -> \code{FilterSelectedFeatures} } -\section{Public fields}{ -\if{html}{\out{
}} -\describe{ -\item{\code{learner}}{(\link[mlr3:Learner]{mlr3::Learner})\cr -Learner to extract the importance values from.} -} -\if{html}{\out{
}} -} \section{Methods}{ \subsection{Public methods}{ \itemize{ @@ -96,8 +88,6 @@ Learner to extract the importance values from.}
Inherited methods
@@ -108,7 +98,7 @@ Learner to extract the importance values from.} \subsection{Method \code{new()}}{ Create a FilterImportance object. \subsection{Usage}{ -\if{html}{\out{
}}\preformatted{FilterSelectedFeatures$new(learner = mlr3::lrn("classif.featureless"))}\if{html}{\out{
}} +\if{html}{\out{
}}\preformatted{FilterSelectedFeatures$new(learner)}\if{html}{\out{
}} } \subsection{Arguments}{ diff --git a/man/mlr_filters_univariate_cox.Rd b/man/mlr_filters_univariate_cox.Rd index 58651cd7..6fdd6a35 100644 --- a/man/mlr_filters_univariate_cox.Rd +++ b/man/mlr_filters_univariate_cox.Rd @@ -19,7 +19,7 @@ significance of the feature's impact on survival. The filter value is to ensure numerical stability for very small \eqn{p}-values. Also higher values denote more important features. The filter works only for numeric features so please ensure that factor variables are properly encoded, e.g. -using \link[mlr3pipelines:mlr_pipeops_encode]{PipeOpEncode}. +using \link[mlr3pipelines:PipeOpEncode]{PipeOpEncode}. } \examples{ @@ -29,7 +29,7 @@ filter } \seealso{ \itemize{ -\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -74,8 +74,6 @@ Other Filter:
Inherited methods
diff --git a/man/mlr_filters_variance.Rd b/man/mlr_filters_variance.Rd index 4f6a5eb9..8a0cea0b 100644 --- a/man/mlr_filters_variance.Rd +++ b/man/mlr_filters_variance.Rd @@ -38,7 +38,7 @@ Bommert A, Sun X, Bischl B, Rahnenführer J, Lang M (2020). } \seealso{ \itemize{ -\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -83,8 +83,6 @@ Other Filter:
Inherited methods
From ff9efa6f00577ed4f0e38fb874e0cc9bf388010e Mon Sep 17 00:00:00 2001 From: mb706 Date: Wed, 13 Aug 2025 22:09:39 +0200 Subject: [PATCH 02/10] inherit --- R/Filter.R | 1 + 1 file changed, 1 insertion(+) diff --git a/R/Filter.R b/R/Filter.R index 7e5796c0..852375dc 100644 --- a/R/Filter.R +++ b/R/Filter.R @@ -16,6 +16,7 @@ #' @family Filter #' @export Filter = R6Class("Filter", + inherit = Mlr3Component, public = list( #' @field task_types (`character()`)\cr #' Set of supported task types, e.g. `"classif"` or `"regr"`. From 1815124772e14c9cdb5e1833a1ad69134fdde87c Mon Sep 17 00:00:00 2001 From: mb706 Date: Wed, 13 Aug 2025 22:10:15 +0200 Subject: [PATCH 03/10] document() --- man/Filter.Rd | 14 ++++++++++++++ man/flt.Rd | 10 ++++++++++ man/mlr_filters_anova.Rd | 13 +++++++++---- man/mlr_filters_auc.Rd | 13 +++++++++---- man/mlr_filters_boruta.Rd | 13 +++++++++---- man/mlr_filters_carscore.Rd | 13 +++++++++---- man/mlr_filters_carsurvscore.Rd | 13 +++++++++---- man/mlr_filters_cmim.Rd | 13 +++++++++---- man/mlr_filters_correlation.Rd | 13 +++++++++---- man/mlr_filters_disr.Rd | 13 +++++++++---- man/mlr_filters_find_correlation.Rd | 13 +++++++++---- man/mlr_filters_importance.Rd | 11 ++++++++--- man/mlr_filters_information_gain.Rd | 13 +++++++++---- man/mlr_filters_jmi.Rd | 13 +++++++++---- man/mlr_filters_jmim.Rd | 13 +++++++++---- man/mlr_filters_kruskal_test.Rd | 13 +++++++++---- man/mlr_filters_mim.Rd | 13 +++++++++---- man/mlr_filters_mrmr.Rd | 13 +++++++++---- man/mlr_filters_njmim.Rd | 13 +++++++++---- man/mlr_filters_performance.Rd | 11 ++++++++--- man/mlr_filters_permutation.Rd | 11 ++++++++--- man/mlr_filters_relief.Rd | 13 +++++++++---- man/mlr_filters_selected_features.Rd | 11 ++++++++--- man/mlr_filters_univariate_cox.Rd | 15 ++++++++++----- man/mlr_filters_variance.Rd | 13 +++++++++---- 25 files changed, 228 insertions(+), 89 deletions(-) diff --git a/man/Filter.Rd b/man/Filter.Rd index 2fd8dd5b..6a0158fd 100644 --- a/man/Filter.Rd +++ b/man/Filter.Rd @@ -44,6 +44,9 @@ Other Filter: \code{\link{mlr_filters_variance}} } \concept{Filter} +\section{Super class}{ +\code{\link[mlr3misc:Mlr3Component]{mlr3misc::Mlr3Component}} -> \code{Filter} +} \section{Public fields}{ \if{html}{\out{
}} \describe{ @@ -77,6 +80,17 @@ non-deterministic order.} \item \href{#method-Filter-clone}{\code{Filter$clone()}} } } +\if{html}{\out{ +
Inherited methods + +
+}} \if{html}{\out{
}} \if{html}{\out{}} \if{latex}{\out{\hypertarget{method-Filter-new}{}}} diff --git a/man/flt.Rd b/man/flt.Rd index e7de3901..a0991cad 100644 --- a/man/flt.Rd +++ b/man/flt.Rd @@ -9,6 +9,16 @@ flt(.key, ...) flts(.keys, ...) } +\arguments{ +\item{.key}{(\code{character(1)})\cr +Key passed to the respective \link[mlr3misc:Dictionary]{dictionary} to retrieve the object.} + +\item{...}{(any)\cr +Additional arguments.} + +\item{.keys}{(\code{character()})\cr +Keys passed to the respective \link[mlr3misc:Dictionary]{dictionary} to retrieve multiple objects.} +} \value{ \link{Filter}. } diff --git a/man/mlr_filters_anova.Rd b/man/mlr_filters_anova.Rd index 418898f8..988c480b 100644 --- a/man/mlr_filters_anova.Rd +++ b/man/mlr_filters_anova.Rd @@ -43,7 +43,7 @@ Bommert A, Sun X, Bischl B, Rahnenführer J, Lang M (2020). } \seealso{ \itemize{ -\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -74,8 +74,8 @@ Other Filter: \code{\link{mlr_filters_variance}} } \concept{Filter} -\section{Super class}{ -\code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterAnova} +\section{Super classes}{ +\code{\link[mlr3misc:Mlr3Component]{mlr3misc::Mlr3Component}} -> \code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterAnova} } \section{Methods}{ \subsection{Public methods}{ @@ -85,8 +85,13 @@ Other Filter: } } \if{html}{\out{ -
Inherited methods +
Inherited methods diff --git a/man/mlr_filters_auc.Rd b/man/mlr_filters_auc.Rd index 5b870216..0382b36f 100644 --- a/man/mlr_filters_auc.Rd +++ b/man/mlr_filters_auc.Rd @@ -39,7 +39,7 @@ Bommert A, Sun X, Bischl B, Rahnenführer J, Lang M (2020). } \seealso{ \itemize{ -\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -70,8 +70,8 @@ Other Filter: \code{\link{mlr_filters_variance}} } \concept{Filter} -\section{Super class}{ -\code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterAUC} +\section{Super classes}{ +\code{\link[mlr3misc:Mlr3Component]{mlr3misc::Mlr3Component}} -> \code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterAUC} } \section{Methods}{ \subsection{Public methods}{ @@ -81,8 +81,13 @@ Other Filter: } } \if{html}{\out{ -
Inherited methods +
Inherited methods diff --git a/man/mlr_filters_boruta.Rd b/man/mlr_filters_boruta.Rd index c1bf6556..cc57ff6d 100644 --- a/man/mlr_filters_boruta.Rd +++ b/man/mlr_filters_boruta.Rd @@ -41,7 +41,7 @@ Kursa MB, Rudnicki WR (2010). } \seealso{ \itemize{ -\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -72,8 +72,8 @@ Other Filter: \code{\link{mlr_filters_variance}} } \concept{Filter} -\section{Super class}{ -\code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterBoruta} +\section{Super classes}{ +\code{\link[mlr3misc:Mlr3Component]{mlr3misc::Mlr3Component}} -> \code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterBoruta} } \section{Methods}{ \subsection{Public methods}{ @@ -83,8 +83,13 @@ Other Filter: } } \if{html}{\out{ -
Inherited methods +
Inherited methods diff --git a/man/mlr_filters_carscore.Rd b/man/mlr_filters_carscore.Rd index 18c52c02..d27c2013 100644 --- a/man/mlr_filters_carscore.Rd +++ b/man/mlr_filters_carscore.Rd @@ -41,7 +41,7 @@ if (mlr3misc::require_namespaces(c("mlr3pipelines", "care", "rpart"), quietly = } \seealso{ \itemize{ -\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -72,8 +72,8 @@ Other Filter: \code{\link{mlr_filters_variance}} } \concept{Filter} -\section{Super class}{ -\code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterCarScore} +\section{Super classes}{ +\code{\link[mlr3misc:Mlr3Component]{mlr3misc::Mlr3Component}} -> \code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterCarScore} } \section{Methods}{ \subsection{Public methods}{ @@ -83,8 +83,13 @@ Other Filter: } } \if{html}{\out{ -
Inherited methods +
Inherited methods diff --git a/man/mlr_filters_carsurvscore.Rd b/man/mlr_filters_carsurvscore.Rd index e4226609..c2ef44a3 100644 --- a/man/mlr_filters_carsurvscore.Rd +++ b/man/mlr_filters_carsurvscore.Rd @@ -17,7 +17,7 @@ Bommert A, Welchowski T, Schmid M, Rahnenführer J (2021). } \seealso{ \itemize{ -\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -48,8 +48,8 @@ Other Filter: \code{\link{mlr_filters_variance}} } \concept{Filter} -\section{Super class}{ -\code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterCarSurvScore} +\section{Super classes}{ +\code{\link[mlr3misc:Mlr3Component]{mlr3misc::Mlr3Component}} -> \code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterCarSurvScore} } \section{Methods}{ \subsection{Public methods}{ @@ -59,8 +59,13 @@ Other Filter: } } \if{html}{\out{ -
Inherited methods +
Inherited methods diff --git a/man/mlr_filters_cmim.Rd b/man/mlr_filters_cmim.Rd index cd473d93..8bf529ff 100644 --- a/man/mlr_filters_cmim.Rd +++ b/man/mlr_filters_cmim.Rd @@ -54,7 +54,7 @@ Bommert A, Sun X, Bischl B, Rahnenführer J, Lang M (2020). } \seealso{ \itemize{ -\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -85,8 +85,8 @@ Other Filter: \code{\link{mlr_filters_variance}} } \concept{Filter} -\section{Super class}{ -\code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterCMIM} +\section{Super classes}{ +\code{\link[mlr3misc:Mlr3Component]{mlr3misc::Mlr3Component}} -> \code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterCMIM} } \section{Methods}{ \subsection{Public methods}{ @@ -96,8 +96,13 @@ Other Filter: } } \if{html}{\out{ -
Inherited methods +
Inherited methods diff --git a/man/mlr_filters_correlation.Rd b/man/mlr_filters_correlation.Rd index 79406d2e..e50cfa46 100644 --- a/man/mlr_filters_correlation.Rd +++ b/man/mlr_filters_correlation.Rd @@ -50,7 +50,7 @@ Bommert A, Sun X, Bischl B, Rahnenführer J, Lang M (2020). } \seealso{ \itemize{ -\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -81,8 +81,8 @@ Other Filter: \code{\link{mlr_filters_variance}} } \concept{Filter} -\section{Super class}{ -\code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterCorrelation} +\section{Super classes}{ +\code{\link[mlr3misc:Mlr3Component]{mlr3misc::Mlr3Component}} -> \code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterCorrelation} } \section{Methods}{ \subsection{Public methods}{ @@ -92,8 +92,13 @@ Other Filter: } } \if{html}{\out{ -
Inherited methods +
Inherited methods diff --git a/man/mlr_filters_disr.Rd b/man/mlr_filters_disr.Rd index a9a2a722..06d5a494 100644 --- a/man/mlr_filters_disr.Rd +++ b/man/mlr_filters_disr.Rd @@ -54,7 +54,7 @@ Bommert A, Sun X, Bischl B, Rahnenführer J, Lang M (2020). } \seealso{ \itemize{ -\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -85,8 +85,8 @@ Other Filter: \code{\link{mlr_filters_variance}} } \concept{Filter} -\section{Super class}{ -\code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterDISR} +\section{Super classes}{ +\code{\link[mlr3misc:Mlr3Component]{mlr3misc::Mlr3Component}} -> \code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterDISR} } \section{Methods}{ \subsection{Public methods}{ @@ -96,8 +96,13 @@ Other Filter: } } \if{html}{\out{ -
Inherited methods +
Inherited methods diff --git a/man/mlr_filters_find_correlation.Rd b/man/mlr_filters_find_correlation.Rd index a40558e9..3addab1f 100644 --- a/man/mlr_filters_find_correlation.Rd +++ b/man/mlr_filters_find_correlation.Rd @@ -43,7 +43,7 @@ if (mlr3misc::require_namespaces(c("mlr3pipelines", "rpart"), quietly = TRUE)) { } \seealso{ \itemize{ -\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -74,8 +74,8 @@ Other Filter: \code{\link{mlr_filters_variance}} } \concept{Filter} -\section{Super class}{ -\code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterFindCorrelation} +\section{Super classes}{ +\code{\link[mlr3misc:Mlr3Component]{mlr3misc::Mlr3Component}} -> \code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterFindCorrelation} } \section{Methods}{ \subsection{Public methods}{ @@ -85,8 +85,13 @@ Other Filter: } } \if{html}{\out{ -
Inherited methods +
Inherited methods diff --git a/man/mlr_filters_importance.Rd b/man/mlr_filters_importance.Rd index a746ea24..74d34af7 100644 --- a/man/mlr_filters_importance.Rd +++ b/man/mlr_filters_importance.Rd @@ -36,7 +36,7 @@ if (mlr3misc::require_namespaces(c("mlr3pipelines", "rpart", "mlr3learners"), qu } \seealso{ \itemize{ -\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -68,7 +68,7 @@ Other Filter: } \concept{Filter} \section{Super classes}{ -\code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{mlr3filters::FilterLearner} -> \code{FilterImportance} +\code{\link[mlr3misc:Mlr3Component]{mlr3misc::Mlr3Component}} -> \code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{mlr3filters::FilterLearner} -> \code{FilterImportance} } \section{Methods}{ \subsection{Public methods}{ @@ -78,8 +78,13 @@ Other Filter: } } \if{html}{\out{ -
Inherited methods +
Inherited methods diff --git a/man/mlr_filters_information_gain.Rd b/man/mlr_filters_information_gain.Rd index 1da0c4ca..98f878c3 100644 --- a/man/mlr_filters_information_gain.Rd +++ b/man/mlr_filters_information_gain.Rd @@ -47,7 +47,7 @@ if (mlr3misc::require_namespaces(c("mlr3pipelines", "FSelectorRcpp", "rpart"), q } \seealso{ \itemize{ -\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -78,8 +78,8 @@ Other Filter: \code{\link{mlr_filters_variance}} } \concept{Filter} -\section{Super class}{ -\code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterInformationGain} +\section{Super classes}{ +\code{\link[mlr3misc:Mlr3Component]{mlr3misc::Mlr3Component}} -> \code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterInformationGain} } \section{Methods}{ \subsection{Public methods}{ @@ -89,8 +89,13 @@ Other Filter: } } \if{html}{\out{ -
Inherited methods +
Inherited methods diff --git a/man/mlr_filters_jmi.Rd b/man/mlr_filters_jmi.Rd index 3ff41c54..afa028f5 100644 --- a/man/mlr_filters_jmi.Rd +++ b/man/mlr_filters_jmi.Rd @@ -54,7 +54,7 @@ Bommert A, Sun X, Bischl B, Rahnenführer J, Lang M (2020). } \seealso{ \itemize{ -\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -85,8 +85,8 @@ Other Filter: \code{\link{mlr_filters_variance}} } \concept{Filter} -\section{Super class}{ -\code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterJMI} +\section{Super classes}{ +\code{\link[mlr3misc:Mlr3Component]{mlr3misc::Mlr3Component}} -> \code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterJMI} } \section{Methods}{ \subsection{Public methods}{ @@ -96,8 +96,13 @@ Other Filter: } } \if{html}{\out{ -
Inherited methods +
Inherited methods diff --git a/man/mlr_filters_jmim.Rd b/man/mlr_filters_jmim.Rd index 13afcf95..8eadc7a4 100644 --- a/man/mlr_filters_jmim.Rd +++ b/man/mlr_filters_jmim.Rd @@ -54,7 +54,7 @@ Bommert A, Sun X, Bischl B, Rahnenführer J, Lang M (2020). } \seealso{ \itemize{ -\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -85,8 +85,8 @@ Other Filter: \code{\link{mlr_filters_variance}} } \concept{Filter} -\section{Super class}{ -\code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterJMIM} +\section{Super classes}{ +\code{\link[mlr3misc:Mlr3Component]{mlr3misc::Mlr3Component}} -> \code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterJMIM} } \section{Methods}{ \subsection{Public methods}{ @@ -96,8 +96,13 @@ Other Filter: } } \if{html}{\out{ -
Inherited methods +
Inherited methods diff --git a/man/mlr_filters_kruskal_test.Rd b/man/mlr_filters_kruskal_test.Rd index 12a50877..2835aae0 100644 --- a/man/mlr_filters_kruskal_test.Rd +++ b/man/mlr_filters_kruskal_test.Rd @@ -50,7 +50,7 @@ Bommert A, Sun X, Bischl B, Rahnenführer J, Lang M (2020). } \seealso{ \itemize{ -\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -81,8 +81,8 @@ Other Filter: \code{\link{mlr_filters_variance}} } \concept{Filter} -\section{Super class}{ -\code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterKruskalTest} +\section{Super classes}{ +\code{\link[mlr3misc:Mlr3Component]{mlr3misc::Mlr3Component}} -> \code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterKruskalTest} } \section{Methods}{ \subsection{Public methods}{ @@ -92,8 +92,13 @@ Other Filter: } } \if{html}{\out{ -
Inherited methods +
Inherited methods diff --git a/man/mlr_filters_mim.Rd b/man/mlr_filters_mim.Rd index 580818d2..a5c05127 100644 --- a/man/mlr_filters_mim.Rd +++ b/man/mlr_filters_mim.Rd @@ -54,7 +54,7 @@ Bommert A, Sun X, Bischl B, Rahnenführer J, Lang M (2020). } \seealso{ \itemize{ -\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -85,8 +85,8 @@ Other Filter: \code{\link{mlr_filters_variance}} } \concept{Filter} -\section{Super class}{ -\code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterMIM} +\section{Super classes}{ +\code{\link[mlr3misc:Mlr3Component]{mlr3misc::Mlr3Component}} -> \code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterMIM} } \section{Methods}{ \subsection{Public methods}{ @@ -96,8 +96,13 @@ Other Filter: } } \if{html}{\out{ -
Inherited methods +
Inherited methods diff --git a/man/mlr_filters_mrmr.Rd b/man/mlr_filters_mrmr.Rd index 2fa4663f..2986a8e2 100644 --- a/man/mlr_filters_mrmr.Rd +++ b/man/mlr_filters_mrmr.Rd @@ -54,7 +54,7 @@ Bommert A, Sun X, Bischl B, Rahnenführer J, Lang M (2020). } \seealso{ \itemize{ -\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -85,8 +85,8 @@ Other Filter: \code{\link{mlr_filters_variance}} } \concept{Filter} -\section{Super class}{ -\code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterMRMR} +\section{Super classes}{ +\code{\link[mlr3misc:Mlr3Component]{mlr3misc::Mlr3Component}} -> \code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterMRMR} } \section{Methods}{ \subsection{Public methods}{ @@ -96,8 +96,13 @@ Other Filter: } } \if{html}{\out{ -
Inherited methods +
Inherited methods diff --git a/man/mlr_filters_njmim.Rd b/man/mlr_filters_njmim.Rd index 6948e0c5..c98f5ea5 100644 --- a/man/mlr_filters_njmim.Rd +++ b/man/mlr_filters_njmim.Rd @@ -54,7 +54,7 @@ Bommert A, Sun X, Bischl B, Rahnenführer J, Lang M (2020). } \seealso{ \itemize{ -\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -85,8 +85,8 @@ Other Filter: \code{\link{mlr_filters_variance}} } \concept{Filter} -\section{Super class}{ -\code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterNJMIM} +\section{Super classes}{ +\code{\link[mlr3misc:Mlr3Component]{mlr3misc::Mlr3Component}} -> \code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterNJMIM} } \section{Methods}{ \subsection{Public methods}{ @@ -96,8 +96,13 @@ Other Filter: } } \if{html}{\out{ -
Inherited methods +
Inherited methods diff --git a/man/mlr_filters_performance.Rd b/man/mlr_filters_performance.Rd index b3efe110..eff371ad 100644 --- a/man/mlr_filters_performance.Rd +++ b/man/mlr_filters_performance.Rd @@ -35,7 +35,7 @@ if (mlr3misc::require_namespaces(c("mlr3pipelines", "rpart"), quietly = TRUE)) { } \seealso{ \itemize{ -\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -67,7 +67,7 @@ Other Filter: } \concept{Filter} \section{Super classes}{ -\code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{mlr3filters::FilterLearnerPerformance} -> \code{FilterPerformance} +\code{\link[mlr3misc:Mlr3Component]{mlr3misc::Mlr3Component}} -> \code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{mlr3filters::FilterLearnerPerformance} -> \code{FilterPerformance} } \section{Methods}{ \subsection{Public methods}{ @@ -77,8 +77,13 @@ Other Filter: } } \if{html}{\out{ -
Inherited methods +
Inherited methods diff --git a/man/mlr_filters_permutation.Rd b/man/mlr_filters_permutation.Rd index 6a1a99fc..ff369078 100644 --- a/man/mlr_filters_permutation.Rd +++ b/man/mlr_filters_permutation.Rd @@ -48,7 +48,7 @@ if (mlr3misc::require_namespaces(c("mlr3pipelines", "rpart"), quietly = TRUE)) { } \seealso{ \itemize{ -\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -80,7 +80,7 @@ Other Filter: } \concept{Filter} \section{Super classes}{ -\code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{mlr3filters::FilterLearnerPerformance} -> \code{FilterPermutation} +\code{\link[mlr3misc:Mlr3Component]{mlr3misc::Mlr3Component}} -> \code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{mlr3filters::FilterLearnerPerformance} -> \code{FilterPermutation} } \section{Methods}{ \subsection{Public methods}{ @@ -90,8 +90,13 @@ Other Filter: } } \if{html}{\out{ -
Inherited methods +
Inherited methods diff --git a/man/mlr_filters_relief.Rd b/man/mlr_filters_relief.Rd index 27673b41..da82ebdb 100644 --- a/man/mlr_filters_relief.Rd +++ b/man/mlr_filters_relief.Rd @@ -39,7 +39,7 @@ if (mlr3misc::require_namespaces(c("mlr3pipelines", "FSelectorRcpp", "rpart"), q } \seealso{ \itemize{ -\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -70,8 +70,8 @@ Other Filter: \code{\link{mlr_filters_variance}} } \concept{Filter} -\section{Super class}{ -\code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterRelief} +\section{Super classes}{ +\code{\link[mlr3misc:Mlr3Component]{mlr3misc::Mlr3Component}} -> \code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterRelief} } \section{Methods}{ \subsection{Public methods}{ @@ -81,8 +81,13 @@ Other Filter: } } \if{html}{\out{ -
Inherited methods +
Inherited methods diff --git a/man/mlr_filters_selected_features.Rd b/man/mlr_filters_selected_features.Rd index dd831634..475c96a3 100644 --- a/man/mlr_filters_selected_features.Rd +++ b/man/mlr_filters_selected_features.Rd @@ -43,7 +43,7 @@ if (mlr3misc::require_namespaces(c("mlr3pipelines", "mlr3learners", "rpart"), qu } \seealso{ \itemize{ -\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -75,7 +75,7 @@ Other Filter: } \concept{Filter} \section{Super classes}{ -\code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{mlr3filters::FilterLearner} -> \code{FilterSelectedFeatures} +\code{\link[mlr3misc:Mlr3Component]{mlr3misc::Mlr3Component}} -> \code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{mlr3filters::FilterLearner} -> \code{FilterSelectedFeatures} } \section{Methods}{ \subsection{Public methods}{ @@ -85,8 +85,13 @@ Other Filter: } } \if{html}{\out{ -
Inherited methods +
Inherited methods diff --git a/man/mlr_filters_univariate_cox.Rd b/man/mlr_filters_univariate_cox.Rd index 6fdd6a35..aae70f6c 100644 --- a/man/mlr_filters_univariate_cox.Rd +++ b/man/mlr_filters_univariate_cox.Rd @@ -19,7 +19,7 @@ significance of the feature's impact on survival. The filter value is to ensure numerical stability for very small \eqn{p}-values. Also higher values denote more important features. The filter works only for numeric features so please ensure that factor variables are properly encoded, e.g. -using \link[mlr3pipelines:PipeOpEncode]{PipeOpEncode}. +using \link[mlr3pipelines:mlr_pipeops_encode]{PipeOpEncode}. } \examples{ @@ -29,7 +29,7 @@ filter } \seealso{ \itemize{ -\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -60,8 +60,8 @@ Other Filter: \code{\link{mlr_filters_variance}} } \concept{Filter} -\section{Super class}{ -\code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterUnivariateCox} +\section{Super classes}{ +\code{\link[mlr3misc:Mlr3Component]{mlr3misc::Mlr3Component}} -> \code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterUnivariateCox} } \section{Methods}{ \subsection{Public methods}{ @@ -71,8 +71,13 @@ Other Filter: } } \if{html}{\out{ -
Inherited methods +
Inherited methods diff --git a/man/mlr_filters_variance.Rd b/man/mlr_filters_variance.Rd index 8a0cea0b..86ce8695 100644 --- a/man/mlr_filters_variance.Rd +++ b/man/mlr_filters_variance.Rd @@ -38,7 +38,7 @@ Bommert A, Sun X, Bischl B, Rahnenführer J, Lang M (2020). } \seealso{ \itemize{ -\item \link[mlr3pipelines:PipeOpFilter]{PipeOpFilter} for filter-based feature selection. +\item \link[mlr3pipelines:mlr_pipeops_filter]{PipeOpFilter} for filter-based feature selection. \item \link[mlr3misc:Dictionary]{Dictionary} of \link[=Filter]{Filters}: \link{mlr_filters} } @@ -69,8 +69,8 @@ Other Filter: \code{\link{mlr_filters_univariate_cox}} } \concept{Filter} -\section{Super class}{ -\code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterVariance} +\section{Super classes}{ +\code{\link[mlr3misc:Mlr3Component]{mlr3misc::Mlr3Component}} -> \code{\link[mlr3filters:Filter]{mlr3filters::Filter}} -> \code{FilterVariance} } \section{Methods}{ \subsection{Public methods}{ @@ -80,8 +80,13 @@ Other Filter: } } \if{html}{\out{ -
Inherited methods +
Inherited methods From 3888a528eaeb43cadc3099be06c6e5205b96c2db Mon Sep 17 00:00:00 2001 From: mb706 Date: Wed, 13 Aug 2025 22:18:01 +0200 Subject: [PATCH 04/10] remotes --- DESCRIPTION | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/DESCRIPTION b/DESCRIPTION index c26ad6ca..555144e2 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -48,6 +48,10 @@ Suggests: survival, testthat (>= 3.0.0), withr +Remotes: + mlr-org/mlr3misc@common_baseclass, + mlr-org/mlr3pipelines@common_baseclass, + mlr-org/mlr3@common_baseclass Config/testthat/edition: 3 Encoding: UTF-8 NeedsCompilation: no From fbfa4dc16b4970a1a1cf9db49400a1e4d28927af Mon Sep 17 00:00:00 2001 From: mb706 Date: Fri, 15 Aug 2025 12:37:42 +0200 Subject: [PATCH 05/10] default dictionary args --- R/Filter.R | 4 ++-- R/FilterImportance.R | 2 +- R/FilterPerformance.R | 2 +- R/FilterPermutation.R | 2 +- R/FilterSelectedFeatures.R | 2 +- R/mlr_filters.R | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/R/Filter.R b/R/Filter.R index 852375dc..ece20e68 100644 --- a/R/Filter.R +++ b/R/Filter.R @@ -68,9 +68,9 @@ Filter = R6Class("Filter", #' String in the format `[pkg]::[topic]` pointing to a manual page for #' this object. The referenced help package can be opened via method #' `$help()`. - initialize = function(dict_entry, task_types, task_properties = character(0), + initialize = function(id = dict_entry, task_types, task_properties = character(0), param_set = ps(), feature_types = character(0), packages = character(0), - properties = character(0), label, man, id = dict_entry + properties = character(0), label, man, dict_entry = id ) { if (!missing(label) || !missing(man)) { deprecated_component("label and man are deprecated for Filter construction and will be removed in the future.") diff --git a/R/FilterImportance.R b/R/FilterImportance.R index 72e746b8..33d4fc19 100644 --- a/R/FilterImportance.R +++ b/R/FilterImportance.R @@ -60,4 +60,4 @@ FilterImportance = R6Class("FilterImportance", ) #' @include mlr_filters.R -mlr_filters$add("importance", FilterImportance) +mlr_filters$add("importance", FilterImportance, .prototype_args = list(learner = lrn("classif.featureless"))) diff --git a/R/FilterPerformance.R b/R/FilterPerformance.R index 2b6471c2..cf476f21 100644 --- a/R/FilterPerformance.R +++ b/R/FilterPerformance.R @@ -81,4 +81,4 @@ FilterPerformance = R6Class("FilterPerformance", ) #' @include mlr_filters.R -mlr_filters$add("performance", FilterPerformance) +mlr_filters$add("performance", FilterPerformance, .prototype_args = list(learner = lrn("classif.featureless"))) diff --git a/R/FilterPermutation.R b/R/FilterPermutation.R index 7d17d151..63508702 100644 --- a/R/FilterPermutation.R +++ b/R/FilterPermutation.R @@ -124,4 +124,4 @@ FilterPermutation = R6Class("FilterPermutation", ) #' @include mlr_filters.R -mlr_filters$add("permutation", FilterPermutation) +mlr_filters$add("permutation", FilterPermutation, .prototype_args = list(learner = lrn("classif.featureless"))) diff --git a/R/FilterSelectedFeatures.R b/R/FilterSelectedFeatures.R index bda697b6..6bce2e1e 100644 --- a/R/FilterSelectedFeatures.R +++ b/R/FilterSelectedFeatures.R @@ -68,4 +68,4 @@ FilterSelectedFeatures = R6Class("FilterSelectedFeatures", ) #' @include mlr_filters.R -mlr_filters$add("selected_features", FilterSelectedFeatures) +mlr_filters$add("selected_features", FilterSelectedFeatures, .prototype_args = list(learner = lrn("classif.featureless"))) diff --git a/R/mlr_filters.R b/R/mlr_filters.R index b8fc3a0d..3a263bf3 100644 --- a/R/mlr_filters.R +++ b/R/mlr_filters.R @@ -31,7 +31,7 @@ as.data.table.DictionaryFilter = function(x, ..., objects = FALSE) { assert_flag(objects) setkeyv(map_dtr(x$keys(), function(key) { - f = x$get(key) + f = x$get(key, .prototype = TRUE) insert_named( list(key = key, label = f$label, task_types = list(f$task_types), task_properties = list(f$task_properties), params = list(f$param_set$ids()), From 5290af4414c6ab518064172c711351d6e2285297 Mon Sep 17 00:00:00 2001 From: mb706 Date: Fri, 15 Aug 2025 13:21:54 +0200 Subject: [PATCH 06/10] use prototype construction args in tests --- tests/testthat/test_filter_classif.R | 4 ++-- tests/testthat/test_filter_regr.R | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/testthat/test_filter_classif.R b/tests/testthat/test_filter_classif.R index 1c122e2c..25e88f0b 100644 --- a/tests/testthat/test_filter_classif.R +++ b/tests/testthat/test_filter_classif.R @@ -1,7 +1,7 @@ test_that("all classif filters return correct filter values", { task = mlr_tasks$get("sonar") task$select(head(task$feature_names, 3)) - filters = mlr_filters$mget(mlr_filters$keys()) + filters = mlr_filters$mget(mlr_filters$keys(), .prototype = TRUE) filters$permutation$param_set$values = list(nmc = 2) for (f in filters) { @@ -19,7 +19,7 @@ test_that("filters throw errors on missing values", { data$V1[1] = NA task = as_task_classif(data, target = task$target_names) - filters = mlr_filters$mget(mlr_filters$keys()) + filters = mlr_filters$mget(mlr_filters$keys(), .prototype = TRUE) for (f in filters) { if ("classif" %nin% f$task_types) { diff --git a/tests/testthat/test_filter_regr.R b/tests/testthat/test_filter_regr.R index d5fa6824..f731efaa 100644 --- a/tests/testthat/test_filter_regr.R +++ b/tests/testthat/test_filter_regr.R @@ -1,6 +1,6 @@ test_that("all regr filters return correct filter values", { task = mlr_tasks$get("mtcars") - filters = mlr_filters$mget(mlr_filters$keys()) + filters = mlr_filters$mget(mlr_filters$keys(), .prototype = TRUE) for (f in filters) { if ("regr" %in% f$task_types && all(require_namespaces(f$packages, quietly = TRUE))) { @@ -15,7 +15,7 @@ test_that("filters throw errors on missing values", { data$cyl[1] = NA task = as_task_regr(data, target = "mpg") - filters = mlr_filters$mget(mlr_filters$keys()) + filters = mlr_filters$mget(mlr_filters$keys(), .prototype = TRUE) for (f in filters) { if ("regr" %nin% f$task_types) { @@ -37,7 +37,7 @@ test_that("filters throw errors on missing values", { test_that("Errors for unsupported features", { skip_if("california_housing" %nin% mlr_tasks$keys()) task = tsk("california_housing") - filters = mlr_filters$mget(mlr_filters$keys()) + filters = mlr_filters$mget(mlr_filters$keys(), .prototype = TRUE) # supported: numeric, integer # supplied: factor, integer, numeric From 4a641b4d81f52b4a69652522f45d85c2ee8190ec Mon Sep 17 00:00:00 2001 From: mb706 Date: Fri, 15 Aug 2025 13:41:32 +0200 Subject: [PATCH 07/10] don't erase param vals in tests --- R/FilterLearner.R | 2 +- R/FilterLearnerPerformance.R | 2 +- tests/testthat/test_filter_classif.R | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/R/FilterLearner.R b/R/FilterLearner.R index 112af7a1..7a817ec9 100644 --- a/R/FilterLearner.R +++ b/R/FilterLearner.R @@ -4,7 +4,7 @@ FilterLearner = R6Class("FilterLearner", inherit = Filter, initialize = function(learner, dict_entry) { private$.learner = learner super$initialize( - id = learner$id, + id = paste0(dict_entry, ".", learner$id), dict_entry = dict_entry, task_types = learner$task_type, feature_types = learner$feature_types, diff --git a/R/FilterLearnerPerformance.R b/R/FilterLearnerPerformance.R index 4f0275a5..cd3b21d8 100644 --- a/R/FilterLearnerPerformance.R +++ b/R/FilterLearnerPerformance.R @@ -7,7 +7,7 @@ FilterLearnerPerformance = R6Class("FilterLearnerPerformance", inherit = Filter, private$.measure = measure private$.additional_param_set = assert_param_set(additional_param_set) super$initialize( - id = learner$id, + id = paste0(dict_entry, ".", learner$id), dict_entry = dict_entry, task_types = learner$task_type, feature_types = learner$feature_types, diff --git a/tests/testthat/test_filter_classif.R b/tests/testthat/test_filter_classif.R index 25e88f0b..4ea50396 100644 --- a/tests/testthat/test_filter_classif.R +++ b/tests/testthat/test_filter_classif.R @@ -2,7 +2,7 @@ test_that("all classif filters return correct filter values", { task = mlr_tasks$get("sonar") task$select(head(task$feature_names, 3)) filters = mlr_filters$mget(mlr_filters$keys(), .prototype = TRUE) - filters$permutation$param_set$values = list(nmc = 2) + filters$permutation$param_set$set_values(nmc = 2) for (f in filters) { if ("classif" %in% f$task_types && all(require_namespaces(f$packages, quietly = TRUE))) { From 8a4dc1a1519182f47afbfc801bec69db9d4da65d Mon Sep 17 00:00:00 2001 From: mb706 Date: Fri, 15 Aug 2025 13:54:01 +0200 Subject: [PATCH 08/10] prototype in tests --- tests/testthat/test_filter_generic.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/testthat/test_filter_generic.R b/tests/testthat/test_filter_generic.R index 0fd1104a..d4a40407 100644 --- a/tests/testthat/test_filter_generic.R +++ b/tests/testthat/test_filter_generic.R @@ -1,6 +1,6 @@ test_that("all generic filters return correct filter values", { task = mlr_tasks$get("mtcars") - filters = mlr_filters$mget(mlr_filters$keys()) + filters = mlr_filters$mget(mlr_filters$keys(), .prototype = TRUE) for (f in filters) { if (NA %in% f$task_types && all(require_namespaces(f$packages, quietly = TRUE))) { @@ -15,7 +15,7 @@ test_that("filters throw errors on missing values", { data$cyl[1] = NA task = as_task_regr(data, target = "mpg") - filters = mlr_filters$mget(mlr_filters$keys()) + filters = mlr_filters$mget(mlr_filters$keys(), .prototype = TRUE) for (f in filters) { if (!is_scalar_na(f$task_types)) { From e571e40ac89ef9a0b6756f48d24225d214f0cf43 Mon Sep 17 00:00:00 2001 From: mb706 Date: Fri, 15 Aug 2025 14:00:41 +0200 Subject: [PATCH 09/10] examples --- R/FilterPermutation.R | 6 ++++-- man/Filter.Rd | 10 +++++----- man/mlr_filters_permutation.Rd | 6 ++++-- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/R/FilterPermutation.R b/R/FilterPermutation.R index 63508702..cf1a00a1 100644 --- a/R/FilterPermutation.R +++ b/R/FilterPermutation.R @@ -40,8 +40,10 @@ #' #' # Note: `filter.frac` is selected randomly and should be tuned. #' -#' graph = po("filter", filter = flt("permutation", nmc = 2), filter.frac = 0.5) %>>% -#' po("learner", mlr3::lrn("classif.rpart")) +#' graph = po("filter", +#' filter = flt("permutation", learner = lrn("classif.rpart"), nmc = 2), +#' filter.frac = 0.5 +#' ) %>>% po("learner", mlr3::lrn("classif.rpart")) #' #' graph$train(task) #' } diff --git a/man/Filter.Rd b/man/Filter.Rd index 6a0158fd..6b5aa436 100644 --- a/man/Filter.Rd +++ b/man/Filter.Rd @@ -98,7 +98,7 @@ non-deterministic order.} Create a Filter object. \subsection{Usage}{ \if{html}{\out{
}}\preformatted{Filter$new( - dict_entry, + id = dict_entry, task_types, task_properties = character(0), param_set = ps(), @@ -107,13 +107,16 @@ Create a Filter object. properties = character(0), label, man, - id = dict_entry + dict_entry = id )}\if{html}{\out{
}} } \subsection{Arguments}{ \if{html}{\out{
}} \describe{ +\item{\code{id}}{(\code{character(1)})\cr +Identifier for the filter.} + \item{\code{task_types}}{(\code{character()})\cr Types of the task the filter can operator on. E.g., \code{"classif"} or \code{"regr"}. Can be set to scalar \code{NA} to allow any task type.} @@ -143,9 +146,6 @@ Label for the new instance.} String in the format \verb{[pkg]::[topic]} pointing to a manual page for this object. The referenced help package can be opened via method \verb{$help()}.} - -\item{\code{id}}{(\code{character(1)})\cr -Identifier for the filter.} } \if{html}{\out{
}} } diff --git a/man/mlr_filters_permutation.Rd b/man/mlr_filters_permutation.Rd index ff369078..057f1105 100644 --- a/man/mlr_filters_permutation.Rd +++ b/man/mlr_filters_permutation.Rd @@ -40,8 +40,10 @@ if (mlr3misc::require_namespaces(c("mlr3pipelines", "rpart"), quietly = TRUE)) { # Note: `filter.frac` is selected randomly and should be tuned. - graph = po("filter", filter = flt("permutation", nmc = 2), filter.frac = 0.5) \%>>\% - po("learner", mlr3::lrn("classif.rpart")) + graph = po("filter", + filter = flt("permutation", learner = lrn("classif.rpart"), nmc = 2), + filter.frac = 0.5 + ) \%>>\% po("learner", mlr3::lrn("classif.rpart")) graph$train(task) } From bc586270a19b1b4547ecb53716b38c46873c39fd Mon Sep 17 00:00:00 2001 From: mb706 Date: Fri, 15 Aug 2025 15:37:33 +0200 Subject: [PATCH 10/10] deprecation message rename --- R/Filter.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/Filter.R b/R/Filter.R index ece20e68..2a94ed23 100644 --- a/R/Filter.R +++ b/R/Filter.R @@ -73,7 +73,7 @@ Filter = R6Class("Filter", properties = character(0), label, man, dict_entry = id ) { if (!missing(label) || !missing(man)) { - deprecated_component("label and man are deprecated for Filter construction and will be removed in the future.") + mlr3component_deprecation_msg("label and man are deprecated for Filter construction and will be removed in the future.") } super$initialize(dict_entry = dict_entry, dict_shortaccess = "flt", id = id,