From 7cb9b9bd4b110a30d72b0a583482b9ef97053ac6 Mon Sep 17 00:00:00 2001 From: Marc Becker <33069354+be-marc@users.noreply.github.com> Date: Fri, 25 Oct 2024 20:39:34 +0200 Subject: [PATCH 1/7] release: 1.2.0 (#123) * release: 1.2.0 * ... --- DESCRIPTION | 6 ++---- NEWS.md | 3 ++- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 3aaaf647..f4fd8edb 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: mlr3fselect Title: Feature Selection for 'mlr3' -Version: 1.1.1.9000 +Version: 1.2.0 Authors@R: c( person("Marc", "Becker", , "marcbecker@posteo.de", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-8115-0400")), @@ -27,7 +27,7 @@ Depends: mlr3 (>= 0.21.1), R (>= 3.1.0) Imports: - bbotk (>= 1.0.0), + bbotk (>= 1.2.0), checkmate (>= 2.0.0), data.table, lgr, @@ -42,8 +42,6 @@ Suggests: mlr3pipelines, rpart, testthat (>= 3.0.0) -Remotes: - mlr-org/bbotk Config/testthat/edition: 3 Config/testthat/parallel: true Encoding: UTF-8 diff --git a/NEWS.md b/NEWS.md index 4e6cd6d4..3d2b8f56 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,6 +1,7 @@ -# mlr3fselect (development version) +# mlr3fselect 1.2.0 * feat: Add internal tuning callback `mlr3fselect.internal_tuning`. +* fix: Register mlr3fselect in the `mlr_reflections$loaded_packages` field. # mlr3fselect 1.1.1 From 415af49537331d41e19b0f50c6135b6ca01b4ac1 Mon Sep 17 00:00:00 2001 From: be-marc Date: Fri, 25 Oct 2024 20:40:37 +0200 Subject: [PATCH 2/7] release: 1.2.0.9000 --- DESCRIPTION | 2 +- NEWS.md | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index f4fd8edb..54bf77df 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: mlr3fselect Title: Feature Selection for 'mlr3' -Version: 1.2.0 +Version: 1.2.0.9000 Authors@R: c( person("Marc", "Becker", , "marcbecker@posteo.de", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-8115-0400")), diff --git a/NEWS.md b/NEWS.md index 3d2b8f56..97f5edea 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,5 @@ +# mlr3fselect (development version) + # mlr3fselect 1.2.0 * feat: Add internal tuning callback `mlr3fselect.internal_tuning`. From 57c24358880f1f561ba4d9983b817d0823d5c004 Mon Sep 17 00:00:00 2001 From: Marc Becker <33069354+be-marc@users.noreply.github.com> Date: Wed, 6 Nov 2024 16:44:04 +0100 Subject: [PATCH 3/7] compatibility: mlr3 0.22.0 (#124) * compatibility: mlr3 0.22.0 * ... * ... * ... * ... * ... --- DESCRIPTION | 3 ++- NEWS.md | 4 +++- R/AutoFSelector.R | 8 +++++-- R/auto_fselector.R | 7 ++++-- R/mlr_callbacks.R | 4 ++-- R/zzz.R | 2 +- man/AutoFSelector.Rd | 6 ++++- man/auto_fselector.Rd | 6 ++++- tests/testthat/test_AutoFSelector.R | 2 ++ .../test_FSelectorShadowVariableSearch.R | 2 +- .../test_extract_inner_fselect_archives.R | 20 ++++++++-------- .../test_extract_inner_fselect_result.R | 24 +++++++++---------- tests/testthat/test_fsi.R | 4 ++-- 13 files changed, 56 insertions(+), 36 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 54bf77df..0fc402aa 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -41,7 +41,8 @@ Suggests: mlr3learners, mlr3pipelines, rpart, - testthat (>= 3.0.0) + testthat (>= 3.0.0), + vctrs Config/testthat/edition: 3 Config/testthat/parallel: true Encoding: UTF-8 diff --git a/NEWS.md b/NEWS.md index 97f5edea..059d7025 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,8 +1,10 @@ # mlr3fselect (development version) +* compatibility: mlr3 0.22.0 +* feat: Add internal tuning callback `mlr3fselect.internal_tuning`. + # mlr3fselect 1.2.0 -* feat: Add internal tuning callback `mlr3fselect.internal_tuning`. * fix: Register mlr3fselect in the `mlr_reflections$loaded_packages` field. # mlr3fselect 1.1.1 diff --git a/R/AutoFSelector.R b/R/AutoFSelector.R index de08ed9f..49c481df 100644 --- a/R/AutoFSelector.R +++ b/R/AutoFSelector.R @@ -37,6 +37,7 @@ #' @template param_check_values #' @template param_callbacks #' @template param_ties_method +#' @template param_id #' #' @export #' @examples @@ -123,7 +124,8 @@ AutoFSelector = R6Class("AutoFSelector", store_models = FALSE, check_values = FALSE, callbacks = NULL, - ties_method = "least_features" + ties_method = "least_features", + id = NULL ) { ia = list() self$fselector = assert_r6(fselector, "FSelector")$clone() @@ -141,8 +143,10 @@ AutoFSelector = R6Class("AutoFSelector", ia$ties_method = assert_choice(ties_method, c("least_features", "random")) self$instance_args = ia + id = assert_string(id, null.ok = TRUE) %??% paste0(learner$id, ".fselector") + super$initialize( - id = paste0(learner$id, ".fselector"), + id = id, task_type = learner$task_type, packages = c("mlr3fselect", learner$packages), feature_types = learner$feature_types, diff --git a/R/auto_fselector.R b/R/auto_fselector.R index 8a92d7be..698ada12 100644 --- a/R/auto_fselector.R +++ b/R/auto_fselector.R @@ -20,6 +20,7 @@ #' @template param_check_values #' @template param_callbacks #' @template param_ties_method +#' @template param_id #' #' @export #' @inherit AutoFSelector examples @@ -36,7 +37,8 @@ auto_fselector = function( store_models = FALSE, check_values = FALSE, callbacks = NULL, - ties_method = "least_features" + ties_method = "least_features", + id = NULL ) { terminator = terminator %??% terminator_selection(term_evals, term_time) @@ -51,5 +53,6 @@ auto_fselector = function( store_models = store_models, check_values = check_values, callbacks = callbacks, - ties_method = ties_method) + ties_method = ties_method, + id = id) } diff --git a/R/mlr_callbacks.R b/R/mlr_callbacks.R index 9c5cac29..135b6ccc 100644 --- a/R/mlr_callbacks.R +++ b/R/mlr_callbacks.R @@ -153,7 +153,7 @@ load_callback_one_se_rule = function() { label = "One Standard Error Rule Callback", man = "mlr3fselect::mlr3fselect.one_se_rule", - on_result = function(callback, context) { + on_optimization_end = function(callback, context) { archive = context$instance$archive data = as.data.table(archive) data[, "n_features" := map(get("features"), length)] @@ -203,7 +203,7 @@ load_callback_internal_tuning = function() { callback$state$internal_search_space$aggr_internal_tuned_values(internal_tuned_values) }) - data.table::set(context$aggregated_performance, j = "internal_tuned_values", value = list(internal_tuned_values)) + data.table::set(context$aggregated_performance, j = "internal_tuned_values", value = list(internal_tuned_values)) }, on_optimization_end = function(callback, context) { diff --git a/R/zzz.R b/R/zzz.R index a421b72d..c6154cb8 100644 --- a/R/zzz.R +++ b/R/zzz.R @@ -11,7 +11,7 @@ .onLoad = function(libname, pkgname) { # nocov start - utils::globalVariables(c("super", "self", "n_features")) + utils::globalVariables(c("super", "self", "n_features")) # reflections x = utils::getFromNamespace("bbotk_reflections", ns = "bbotk") diff --git a/man/AutoFSelector.Rd b/man/AutoFSelector.Rd index dd4954de..365d9385 100644 --- a/man/AutoFSelector.Rd +++ b/man/AutoFSelector.Rd @@ -176,7 +176,8 @@ Creates a new instance of this \link[R6:R6Class]{R6} class. store_models = FALSE, check_values = FALSE, callbacks = NULL, - ties_method = "least_features" + ties_method = "least_features", + id = NULL )}\if{html}{\out{}} } @@ -224,6 +225,9 @@ The option \code{"least_features"} (default) selects the feature set with the le If there are multiple best feature sets with the same number of features, one is selected randomly. The \code{random} method returns a random feature set from the best feature sets. Ignored if multiple measures are used.} + +\item{\code{id}}{(\code{character(1)})\cr +Identifier for the new instance.} } \if{html}{\out{}} } diff --git a/man/auto_fselector.Rd b/man/auto_fselector.Rd index 55d4183c..cd947011 100644 --- a/man/auto_fselector.Rd +++ b/man/auto_fselector.Rd @@ -17,7 +17,8 @@ auto_fselector( store_models = FALSE, check_values = FALSE, callbacks = NULL, - ties_method = "least_features" + ties_method = "least_features", + id = NULL ) } \arguments{ @@ -70,6 +71,9 @@ The option \code{"least_features"} (default) selects the feature set with the le If there are multiple best feature sets with the same number of features, one is selected randomly. The \code{random} method returns a random feature set from the best feature sets. Ignored if multiple measures are used.} + +\item{id}{(\code{character(1)})\cr +Identifier for the new instance.} } \value{ \link{AutoFSelector}. diff --git a/tests/testthat/test_AutoFSelector.R b/tests/testthat/test_AutoFSelector.R index 58df4180..c48eb5ac 100644 --- a/tests/testthat/test_AutoFSelector.R +++ b/tests/testthat/test_AutoFSelector.R @@ -189,6 +189,7 @@ test_that("AutoFSelector get_base_learner method works", { test_that("AutoFSelector hash works #647 in mlr3", { afs_1 = AutoFSelector$new( + id = "afs_1", learner = lrn("classif.rpart"), resampling = rsmp("holdout"), measure = msr("classif.ce"), @@ -197,6 +198,7 @@ test_that("AutoFSelector hash works #647 in mlr3", { store_benchmark_result = FALSE) afs_2 = AutoFSelector$new( + id = "afs_2", learner = lrn("classif.rpart"), resampling = rsmp("holdout"), measure = msr("classif.ce"), diff --git a/tests/testthat/test_FSelectorShadowVariableSearch.R b/tests/testthat/test_FSelectorShadowVariableSearch.R index a76b267f..cc8db784 100644 --- a/tests/testthat/test_FSelectorShadowVariableSearch.R +++ b/tests/testthat/test_FSelectorShadowVariableSearch.R @@ -43,7 +43,7 @@ test_that("second selected feature is a shadow variable works", { expect_equal(instance$search_space, domain) expect_equal(instance$objective$domain, domain) # check that task is restored - expect_equal(instance$objective$task, task) + suppressWarnings(expect_equal(instance$objective$task, task)) }) test_that("search is terminated by terminator works", { diff --git a/tests/testthat/test_extract_inner_fselect_archives.R b/tests/testthat/test_extract_inner_fselect_archives.R index 9222f683..59255a9a 100644 --- a/tests/testthat/test_extract_inner_fselect_archives.R +++ b/tests/testthat/test_extract_inner_fselect_archives.R @@ -17,8 +17,8 @@ test_that("extract_inner_fselect_archives function works with resample and repea }) test_that("extract_inner_fselect_archives function works with benchmark and cv", { - at_1 = auto_fselector(fs("random_search", batch_size = 1), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4) - at_2 = auto_fselector(fs("random_search", batch_size = 1), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4) + at_1 = auto_fselector(fs("random_search", batch_size = 1), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4, id = "at_1") + at_2 = auto_fselector(fs("random_search", batch_size = 1), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4, id = "at_2") resampling_outer = rsmp("cv", folds = 2) grid = benchmark_grid(tsk("iris"), list(at_1, at_2), resampling_outer) bmr = benchmark(grid, store_models = TRUE) @@ -30,8 +30,8 @@ test_that("extract_inner_fselect_archives function works with benchmark and cv", }) test_that("extract_inner_fselect_archives function works with benchmark and repeated cv", { - at_1 = auto_fselector(fs("random_search", batch_size = 1), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4) - at_2 = auto_fselector(fs("random_search", batch_size = 1), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4) + at_1 = auto_fselector(fs("random_search", batch_size = 1), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4, id = "at_1") + at_2 = auto_fselector(fs("random_search", batch_size = 1), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4, id = "at_2") resampling_outer = rsmp("repeated_cv", folds = 2, repeats = 3) grid = benchmark_grid(tsk("iris"), list(at_1, at_2), resampling_outer) bmr = benchmark(grid, store_models = TRUE) @@ -43,8 +43,8 @@ test_that("extract_inner_fselect_archives function works with benchmark and repe }) test_that("extract_inner_fselect_archives function works with multiple tasks", { - at_1 = auto_fselector(fs("random_search", batch_size = 1), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4) - at_2 = auto_fselector(fs("random_search", batch_size = 1), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4) + at_1 = auto_fselector(fs("random_search", batch_size = 1), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4, id = "at_1") + at_2 = auto_fselector(fs("random_search", batch_size = 1), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4, id = "at_2") resampling_outer = rsmp("cv", folds = 2) grid = benchmark_grid(list(tsk("iris"), tsk("pima")), list(at_1, at_2), resampling_outer) bmr = benchmark(grid, store_models = TRUE) @@ -73,8 +73,8 @@ test_that("extract_inner_fselect_archives function works with no instance", { }) test_that("extract_inner_fselect_archives function works with benchmark and no models", { - at_1 = auto_fselector(fs("random_search", batch_size = 1), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4) - at_2 = auto_fselector(fs("random_search", batch_size = 1), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4) + at_1 = auto_fselector(fs("random_search", batch_size = 1), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4, id = "at_1") + at_2 = auto_fselector(fs("random_search", batch_size = 1), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4, id = "at_2") resampling_outer = rsmp("cv", folds = 2) grid = benchmark_grid(tsk("iris"), list(at_1, at_2), resampling_outer) bmr = benchmark(grid, store_models = FALSE) @@ -84,9 +84,9 @@ test_that("extract_inner_fselect_archives function works with benchmark and no m test_that("extract_inner_fselect_archives function works with mixed store instance", { at_1 = AutoFSelector$new(lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), trm("evals", n_evals = 4), - fselector = fs("random_search", batch_size = 1), store_fselect_instance = FALSE, store_benchmark_result = FALSE) + fselector = fs("random_search", batch_size = 1), store_fselect_instance = FALSE, store_benchmark_result = FALSE, id = "at_1") at_2 = AutoFSelector$new(lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), trm("evals", n_evals = 4), - fselector = fs("random_search", batch_size = 1)) + fselector = fs("random_search", batch_size = 1), id = "at_2") resampling_outer = rsmp("cv", folds = 2) grid = benchmark_grid(tsk("iris"), list(at_1, at_2), resampling_outer) bmr = benchmark(grid, store_models = TRUE) diff --git a/tests/testthat/test_extract_inner_fselect_result.R b/tests/testthat/test_extract_inner_fselect_result.R index a2d0ddcb..c989e79e 100644 --- a/tests/testthat/test_extract_inner_fselect_result.R +++ b/tests/testthat/test_extract_inner_fselect_result.R @@ -17,8 +17,8 @@ test_that("extract_inner_fselect_results function works with resample and repeat }) test_that("extract_inner_fselect_results function works with benchmark and cv", { - at_1 = auto_fselector(fs("random_search"), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4) - at_2 = auto_fselector(fs("random_search"), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4) + at_1 = auto_fselector(fs("random_search"), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4, id = "at_1") + at_2 = auto_fselector(fs("random_search"), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4, id = "at_2") resampling_outer = rsmp("cv", folds = 2) grid = benchmark_grid(tsk("iris"), list(at_1, at_2), resampling_outer) bmr = benchmark(grid, store_models = TRUE) @@ -30,8 +30,8 @@ test_that("extract_inner_fselect_results function works with benchmark and cv", }) test_that("extract_inner_fselect_results function works with benchmark and repeated cv", { - at_1 = auto_fselector(fs("random_search"), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4) - at_2 = auto_fselector(fs("random_search"), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4) + at_1 = auto_fselector(fs("random_search"), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4, id = "at_1") + at_2 = auto_fselector(fs("random_search"), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4, id = "at_2") resampling_outer = rsmp("repeated_cv", folds = 2, repeats = 3) grid = benchmark_grid(tsk("iris"), list(at_1, at_2), resampling_outer) bmr = benchmark(grid, store_models = TRUE) @@ -43,8 +43,8 @@ test_that("extract_inner_fselect_results function works with benchmark and repea }) test_that("extract_inner_fselect_results function works with multiple tasks", { - at_1 = auto_fselector(fs("random_search"), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4) - at_2 = auto_fselector(fs("random_search"), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4) + at_1 = auto_fselector(fs("random_search"), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4, id = "at_1") + at_2 = auto_fselector(fs("random_search"), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4, id = "at_2") resampling_outer = rsmp("cv", folds = 2) grid = benchmark_grid(list(tsk("iris"), tsk("pima")), list(at_1, at_2), resampling_outer) bmr = benchmark(grid, store_models = TRUE) @@ -73,8 +73,8 @@ test_that("extract_inner_fselect_results function works no instance", { }) test_that("extract_inner_fselect_results function works with benchmark and no models", { - at_1 = auto_fselector(fs("random_search"), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4) - at_2 = auto_fselector(fs("random_search"), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4) + at_1 = auto_fselector(fs("random_search"), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4, id = "at_1") + at_2 = auto_fselector(fs("random_search"), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4, id = "at_2") resampling_outer = rsmp("cv", folds = 2) grid = benchmark_grid(tsk("iris"), list(at_1, at_2), resampling_outer) bmr = benchmark(grid, store_models = FALSE) @@ -84,9 +84,9 @@ test_that("extract_inner_fselect_results function works with benchmark and no mo test_that("extract_inner_fselect_results function works with mixed store instance", { at_1 = AutoFSelector$new(lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), trm("evals", n_evals = 4), - fselector = fs("random_search"), store_fselect_instance = FALSE, store_benchmark_result = FALSE) + fselector = fs("random_search"), store_fselect_instance = FALSE, store_benchmark_result = FALSE, id = "at_1") at_2 = AutoFSelector$new(lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), trm("evals", n_evals = 4), - fselector = fs("random_search")) + fselector = fs("random_search"), id = "at_2") resampling_outer = rsmp("cv", folds = 2) grid = benchmark_grid(tsk("iris"), list(at_1, at_2), resampling_outer) bmr = benchmark(grid, store_models = TRUE) @@ -118,8 +118,8 @@ test_that("extract_inner_fselect_results function works with resample and return }) test_that("extract_inner_fselect_results function works with benchmark and return of instance", { - at_1 = auto_fselector(fs("random_search"), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4) - at_2 = auto_fselector(fs("random_search"), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4) + at_1 = auto_fselector(fs("random_search"), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4, id = "at_1") + at_2 = auto_fselector(fs("random_search"), lrn("classif.rpart"), rsmp("holdout"), msr("classif.ce"), term_evals = 4, id = "at_2") resampling_outer = rsmp("cv", folds = 2) grid = benchmark_grid(tsk("iris"), list(at_1, at_2), resampling_outer) bmr = benchmark(grid, store_models = TRUE) diff --git a/tests/testthat/test_fsi.R b/tests/testthat/test_fsi.R index b07a5191..e327dfe8 100644 --- a/tests/testthat/test_fsi.R +++ b/tests/testthat/test_fsi.R @@ -38,7 +38,7 @@ test_that("fsi and FSelectInstanceBatchSingleCrit are equal", { instance_1 = FSelectInstanceBatchSingleCrit$new(task, learner, resampling, measures, terminator, store_benchmark_result, store_models, check_values, callbacks) instance_2 = fsi(task, learner, resampling, measures, terminator, store_benchmark_result, store_models, check_values, callbacks) - expect_equal(instance_1, instance_2) + suppressWarnings(expect_equal(instance_1, instance_2)) }) test_that("fsi and FSelectInstanceBatchMultiCrit are equal", { @@ -61,5 +61,5 @@ test_that("fsi and FSelectInstanceBatchMultiCrit are equal", { instance_1 = FSelectInstanceBatchMultiCrit$new(task, learner, resampling, measures, terminator, store_benchmark_result, store_models, check_values, callbacks) instance_2 = fsi(task, learner, resampling, measures, terminator, store_benchmark_result, store_models, check_values, callbacks) - expect_equal(instance_1, instance_2) + suppressWarnings(expect_equal(instance_1, instance_2)) }) From dfad3d5d856ce4a90fa8c84780069c1a732cd064 Mon Sep 17 00:00:00 2001 From: be-marc Date: Thu, 7 Nov 2024 17:11:24 +0100 Subject: [PATCH 4/7] tests: replace expect_vector with expect_numeric --- tests/testthat/test_ensemble_fselect.R | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/testthat/test_ensemble_fselect.R b/tests/testthat/test_ensemble_fselect.R index bf0d7512..19bd1240 100644 --- a/tests/testthat/test_ensemble_fselect.R +++ b/tests/testthat/test_ensemble_fselect.R @@ -15,8 +15,8 @@ test_that("ensemble feature selection works", { expect_character(efsr$man) expect_data_table(efsr$result, nrows = 4) expect_list(efsr$result$features, any.missing = FALSE, len = 4) - expect_vector(efsr$result$n_features, size = 4) - expect_vector(efsr$result$classif.ce, size = 4) + expect_numeric(efsr$result$n_features, len = 4) + expect_numeric(efsr$result$classif.ce, len = 4) expect_benchmark_result(efsr$benchmark_result) expect_equal(efsr$measure, "classif.ce") expect_equal(efsr$n_learners, 2) @@ -72,8 +72,8 @@ test_that("ensemble feature selection works without benchmark result", { expect_character(efsr$man) expect_data_table(efsr$result, nrows = 4) expect_list(efsr$result$features, any.missing = FALSE, len = 4) - expect_vector(efsr$result$n_features, size = 4) - expect_vector(efsr$result$classif.ce, size = 4) + expect_numeric(efsr$result$n_features, len = 4) + expect_numeric(efsr$result$classif.ce, len = 4) expect_null(efsr$benchmark_result) expect_equal(efsr$measure, "classif.ce") expect_equal(efsr$n_learners, 2) @@ -121,8 +121,8 @@ test_that("ensemble feature selection works with rfe", { expect_character(efsr$man) expect_data_table(efsr$result, nrows = 4) expect_list(efsr$result$features, any.missing = FALSE, len = 4) - expect_vector(efsr$result$n_features, size = 4) - expect_vector(efsr$result$classif.ce, size = 4) + expect_numeric(efsr$result$n_features, len = 4) + expect_numeric(efsr$result$classif.ce, len = 4) expect_list(efsr$result$importance, any.missing = FALSE, len = 4) expect_benchmark_result(efsr$benchmark_result) expect_equal(efsr$measure, "classif.ce") From 91f6c4bfed87653ff91a52f626dd2723551090a3 Mon Sep 17 00:00:00 2001 From: be-marc Date: Thu, 7 Nov 2024 17:18:33 +0100 Subject: [PATCH 5/7] chore: remove vctrs --- DESCRIPTION | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 0fc402aa..54bf77df 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -41,8 +41,7 @@ Suggests: mlr3learners, mlr3pipelines, rpart, - testthat (>= 3.0.0), - vctrs + testthat (>= 3.0.0) Config/testthat/edition: 3 Config/testthat/parallel: true Encoding: UTF-8 From 5b9a8662fb1f8daeea5a9aa00fed4857a8904bdd Mon Sep 17 00:00:00 2001 From: Marc Becker <33069354+be-marc@users.noreply.github.com> Date: Thu, 7 Nov 2024 22:45:32 +0100 Subject: [PATCH 6/7] release: 1.2.1 (#127) --- DESCRIPTION | 2 +- NEWS.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 54bf77df..8dce045a 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: mlr3fselect Title: Feature Selection for 'mlr3' -Version: 1.2.0.9000 +Version: 1.2.1 Authors@R: c( person("Marc", "Becker", , "marcbecker@posteo.de", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-8115-0400")), diff --git a/NEWS.md b/NEWS.md index 059d7025..65454197 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,10 +1,10 @@ -# mlr3fselect (development version) +# mlr3fselect 1.2.1 * compatibility: mlr3 0.22.0 -* feat: Add internal tuning callback `mlr3fselect.internal_tuning`. # mlr3fselect 1.2.0 +* feat: Add internal tuning callback `mlr3fselect.internal_tuning`. * fix: Register mlr3fselect in the `mlr_reflections$loaded_packages` field. # mlr3fselect 1.1.1 From 39d0f6a02ae61c026442dcbc532f2e208f7b7318 Mon Sep 17 00:00:00 2001 From: be-marc Date: Thu, 7 Nov 2024 22:46:09 +0100 Subject: [PATCH 7/7] release: 1.2.1.9000 --- DESCRIPTION | 2 +- NEWS.md | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 8dce045a..c79f5928 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: mlr3fselect Title: Feature Selection for 'mlr3' -Version: 1.2.1 +Version: 1.2.1.9000 Authors@R: c( person("Marc", "Becker", , "marcbecker@posteo.de", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-8115-0400")), diff --git a/NEWS.md b/NEWS.md index 65454197..c456706a 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,5 @@ +# mlr3fselect (development version) + # mlr3fselect 1.2.1 * compatibility: mlr3 0.22.0