Skip to content

mlr3fselect

1.7.0Package record

Feature Selection for 'mlr3'

2packages dependsuggested by 1
62.5Kdownloads / year
–test coverage
13/13flavors OK

Overview

About

Feature selection package of the 'mlr3' ecosystem. It selects the optimal feature set for any 'mlr3' learner. The package works with several optimization algorithms e.g. Random Search, Recursive Feature Elimination, and Genetic Search. Moreover, it can automatically optimize learners and estimate the performance of optimized feature sets with nested resampling.

Changes in 1.7.0
  • fix: Errors raised by mlr3fselect are structured conditions with the Mlr3Error class now, so they can be caught by class and are formatted with cli (#198).
  • fix: Loading the package repeatedly duplicated the entries that mlr3fselect adds to the reflections of bbotk and mlr3 (#199).
  • fix: ArchiveAsyncFSelect pushed results with the removed rush::Rush$push_results() method.
  • fix: EnsembleFSResult$pareto_front() correctly now handles ties in the pareto front: in edge cases, it returned dominated points for minimizing measures and discarded the true front for maximizing measures (#170).
  • fix: ensemble_fselect() dropped the importance column for subclasses of FSelectorBatchRFE. The column is now added whenever the feature selection result contains importance scores (#195).
  • fix: embedded_ensemble_fselect() instantiated the [mlr3::Resampling] passed to init_resampling by reference, so the resampling of the user was changed and reused the row ids of the first task when applied to another task (#179).
  • fix: EnsembleFSResult$knee_points() silently returned a row of NA when the Pareto front did not span a range in both dimensions. The first point of the Pareto front is returned with a warning now (#171).
  • fix: EnsembleFSResult$stability() cached the results by stability measure only, so the same measure requested with different stability_args returned the cached value of the first call (#189).
  • fix: ensemble_fselect() and embedded_ensemble_fselect() failed with a cryptic error when a single [mlr3::Learner] was passed to the learners argument because the result of as_learners() was discarded (#178).
  • fix: extract_inner_fselect_archives() ignored the exclude_columns argument because it was passed positionally to as.data.table() where it landed in the ... argument (#180).
  • fix: as.data.table() on an ArchiveBatchFSelect returned the n_features column as a list column instead of an integer column, so operations such as sort() failed with 'x' must be atomic (#181).
  • fix: fs("sequential")$optimization_path() returned the first evaluated feature set of each batch instead of the best one, so the selected feature set was usually missing from the reported path (#182).
Show all changes in 1.7.0Hide the rest of the changes in 1.7.0
  • fix: fs("rfecv") left the resampling of the objective set to an insample resampling, so subsequent evaluations on the same instance silently resampled in-sample (#187).
  • fix: The mlr3fselect.backup callback deleted the backup of the previous batch before it wrote the new one, so a crash in between lost the complete run. The benchmark result is now written to a temporary file and renamed afterwards (#188).
  • BREAKING CHANGE: The mlr3fselect.backup callback requires the path argument now. Previously it wrote a bmr.rds file into the working directory of the user (#188).
  • fix: as.data.table() on an EnsembleFSResult accepts the documented benchmark_result argument now to omit the task, learner and resampling columns (#190).
  • fix: The $print() methods of ArchiveBatchFSelect, ArchiveAsyncFSelect, ArchiveAsyncFSelectFrozen, AutoFSelector and FSelector errored with unused argument when arguments such as digits were passed (#190).
  • fix: fs("rfecv") had the same label as fs("rfe"), so both were indistinguishable in as.data.table(mlr_fselectors). Its manual page also instructed to construct it with fs("rfe") (#191).
  • fix: AutoFSelector ignored the predict_type when the final model was fitted, so $predict() returned response predictions although e.g. "prob" was set. Errors raised while setting the predict type on the final model are not swallowed anymore (#184).
  • fix: The $archive, $learner, $fselect_instance and $fselect_result bindings of AutoFSelector are read-only now. Previously an assignment failed with unused argument instead of the usual read-only error (#186).
  • fix: AutoFSelector$train() did not check the row ids of an instantiated inner resampling for cross-validation and reported a wrong set number for holdout (#197).
  • fix: fs("shadow_variable_search") left the shadow variables in the task, domain and search space of the instance when the feature selection was aborted because the first selected feature was a shadow variable (#183).
  • fix: ArchiveBatchFSelect$best() and ArchiveAsyncFSelect$best() returned an empty table or a row of missing values when a single score in the archive was NA. Missing scores are now skipped. ArchiveAsyncFSelect$best() also ignored the ties_method set during construction (#177).
  • fix: The mlr3fselect.svm_rfe callback accepted support vector machines without a type or kernel setting, although only type = "C-classification" and kernel = "linear" are supported. The callback now also errors on multi-class tasks for which the importance scores are not defined (#173).
  • fix: The asynchronous feature selection ignored the always_included column role. Columns with this role were excluded from the models instead of being added to every feature subset (#175).
  • fix: The mlr3fselect.one_se_rule callback errored on archives with a single evaluation or with missing scores, and wrote the n_features column as a list column instead of an integer column (#174).
  • fix: extract_inner_fselect_results() added the iteration and fselect_instance columns to the result of the inner FSelectInstance by reference, which created a circular reference between the instance and its own result (#172).
  • fix: fs("rfe") and fs("rfecv") failed with an internal data.table error when store_benchmark_result = FALSE was set because the importance scores were read from the benchmark result of the archive (#169).
  • fix: fs("rfecv", recursive = FALSE) failed with an internal data.table error because the importance scores of all resampling iterations were written to a single archive row (#168).
  • fix: fs("rfecv") ignored the direction of the measure and selected the feature set size with the worst mean performance for minimizing measures such as msr("classif.ce") or msr("regr.mse"). Feature selection results obtained with fs("rfecv") and a minimizing measure are invalid and should be recomputed (#167).

From NEWS.md in the release

Install

Health

CRAN checks
13OK
Slowest check: 10.4 min · r-oldrel-windows-x86_64
Status changes
  • OK13 OK2026-08-30
  • ERROR10 OK, 3 ERROR2026-07-25
  • OK13 OK2026-05-28
  • ERROR12 OK, 1 ERROR2026-05-16
  • OK14 OK2026-03-10
Advisories

none known

Documentation

In release 1.7.0
READMEYes · 744 wordsVignettesNoNEWSYes · 100% structured · mentions 1.7.0Citation fileYes · software entry onlyWebsiteYes · pkgdown
Help pages
55 (4 internal)includes a package overview page
Examples that run
47%14 run in a plain check (1 of them under a condition) · 16 only when donttest examples are enabled (R CMD check --as-cran)
Exported functions with examples
50%
Documented parameters
100%
Return-value docs
21%
Help pages citing references
2%

Downloads

62.5K
CRAN downloads in the past year
Rank #1,808 · ~171/day · ~5.2K/mo
Daily download trend is not available in this view yet.
3.6K30 days
11.1K90 days
62.5K1 year
Compare downloads with other packages →
Also on2.8K r2u11 autocran3.7K conda_forge

Repository

43Stars
6Forks
3Open issues
0Open PRs
30Releases
781Commits
11Commit identities
machine-learningroptimizationfeature-selectionevolutionary-algorithmsrandom-searchexhaustive-searchrecursive-feature-elimination
License file reads as LGPL-3.0 · 781 commits · Last activity 2026-09-23 · 0% stars, 30d · Default branch at 1.7.0.9000, ahead of CRAN 1.7.0 (checked 2026-10-11) · Discussions: 4 posts
Responsiveness
How these are sampled
PRs merged (all time)
95%
Median days to close, 50 most recently updated closed issues
3
Median days to close, 50 most recently updated closed PRs
0

Stars over time

2025-09-06 · 362026-09-14 · 43
PracticesBeta

16 development-tooling and community-health practices detected across 6 families in the upstream repository

Checks run against github.com/mlr-org/mlr3fselect on 2026-10-11.

Continuous integration (2)
GitHub ActionsR CMD check workflow

The R CMD check workflow runs on Linux, and on R-devel

Governance and community (3)
Contributing guide (inherited from mlr-org)

Funding links: GitHub Sponsors

The repository owner accepts GitHub Sponsors

Docs source (4)
README.Rmdpkgdown

GitHub Pages site last deployed 2026-09-23 · The repository has a site deploy workflow

pkgdown site last built 2026-08-23

Automation and maintenance (1)
Dependabot
Show all practicesHide 2 practices
Lint, format, editor (5)
lintrAirEditorConfigVS CodeRStudio project
Git structural (1)
blame-ignore revs
How this is detected·Detection ruleset v3 (2026-09-26)
AI coding toolsBeta

This repository shows signs of AI coding tools.

  • Claude Codefirst seen 2026-03-17
    Seen in the repository: .claude, CLAUDE.md
    Named in .Rbuildignore: .claude, CLAUDE.md
    Named in .gitignore: .claude, CLAUDE.md
    Pull request it wrote: opened by a project member
    Commits: at least 15 crediting it in the message
  • Cursorfirst seen 2026-03-18
    Named in .Rbuildignore: .cursor
  • Gemini CLIfirst seen 2026-03-18
    Config: a file or ignore line, not recorded which
  • Codexfirst seen 2026-09-23
    Seen in the repository: .codex
    Named in .Rbuildignore: .codex
Shared conventions any agent may read, so they name no particular tool.
Seen in the repository: AGENTS.md
Models named in its commits
  • Claude Opus 4.84 commits · Jul 2026
  • Claude Opus 54 commits · Jul to Sep 2026
  • Claude Opus 4.63 commits · Mar to May 2026
  • Claude Fable 52 commits · Jun 2026
  • Claude Opus 4.71 commit · Apr 2026
Counts are commits, not lines of code. Commits by a tool's accounts count once across all of its accounts. Commits crediting it are the largest count among its credit lines, a minimum.How this is detected·Detection ruleset v4 (updated 2026-09-27)

Dependencies

Declared dependencies
20 external dependencies (excludes base and recommended)

Installing mlr3fselect adds 30 packages (15 with compiled code, 20 MB of source tarballs). Heaviest: data.table 5.7 MB, palmerpenguins 2.9 MB, moocore 1.9 MB.

Depends (2)
R >= 3.1.0mlr3
LinkingTo (0)
none
Enhances (0)
none
Reverse dependencies
2direct
1indirect
Imports 2
Suggested by 1
Depends, Imports or LinkingTo, most downloaded first
Suggests, most downloaded first

People & History

People (5)
Author, Maintainer since 0.2.0 (2020)
Author · added in 1.0.0
Releases (30)

Pick two releases to compare their code metrics.

  • 1.7.0Latest
    record
    2026-08-23 · current release · diff ↗
  • 1.6.0
    record
    2026-05-21 · diff ↗
  • R
    R 4.6.0 released · 2026-04-24
  • 1.5.1
    record
    2026-03-18 · diff ↗
  • 1.5.0
    record
    2025-11-27 · diff ↗ ·
    added 1 export
    faggregate
  • 1.4.0
    record
    2025-07-31 · diff ↗ ·
    added 16 exports
    ArchiveAsyncFSelect, ArchiveAsyncFSelectFrozen, CallbackAsyncFSelect, ContextAsyncFSelect, FSelectInstanceAsyncMultiCrit, FSelectInstanceAsyncSingleCrit, FSelectorAsync, FSelectorAsyncDesignPoints, FSelectorAsyncExhaustiveSearch, FSelectorAsyncFromOptimizerAsync, FSelectorAsyncRandomSearch, ObjectiveFSelectAsync, assert_async_fselect_callback, assert_async_fselect_callbacks, callback_async_fselect, fsi_async
  • R
    R 4.5.0 released · 2025-04-11
  • 1.3.0
    record
    2025-01-16 · diff ↗ ·
    added 1 export
    embedded_ensemble_fselect
  • 1.2.1
    record
    2024-11-07 · diff ↗
  • 1.2.0
    record
    2024-10-25 · diff ↗
  • 1.1.1
    record
    2024-10-15 · diff ↗
  • 1.1.0
    record
    2024-09-09 · diff ↗
  • 1.0.0
    record
    2024-06-29 · diff ↗ ·
    removed 14 exports
    ArchiveFSelect, ContextEval, FSelectInstanceMultiCrit, FSelectInstanceSingleCrit, FSelectorDesignPoints, FSelectorExhaustiveSearch, FSelectorFromOptimizer, FSelectorGeneticSearch, FSelectorRFE, FSelectorRFECV, FSelectorRandomSearch, FSelectorSequential, FSelectorShadowVariableSearch, callback_fselect
    added 24 exports
    ArchiveBatchFSelect, ContextBatchFSelect, EnsembleFSResult, FSelectInstanceBatchMultiCrit, FSelectInstanceBatchSingleCrit, FSelectorBatch, FSelectorBatchDesignPoints, FSelectorBatchExhaustiveSearch, FSelectorBatchFromOptimizerBatch, FSelectorBatchGeneticSearch, FSelectorBatchRFE, FSelectorBatchRFECV, FSelectorBatchRandomSearch, FSelectorBatchSequential, FSelectorBatchShadowVariableSearch, ObjectiveFSelectBatch, assert_fselect_instance, assert_fselect_instance_async, assert_fselect_instance_batch, assert_fselector_async, assert_fselector_batch, assert_fselectors, callback_batch_fselect, ensemble_fselect
  • R
    R 4.4.0 released · 2024-04-24
  • 0.12.0
    record
    2024-03-09 · diff ↗
  • R
    R 4.3.0 released · 2023-04-21
Show 21 earlier eventsHide 21 earlier events

Package metadata

First published
2020-08-23
Total releases
30 / 6 yrs
License
LGPL-3 OSI
Minimum R
≥ 3.1.0
Download size
174 KB

Cite

Cite this package

Run in R for the authors' entry:

citation("mlr3fselect")

The package provides a citation file, so citation() returns the authors' own entry.

It points to 10.5281/zenodo.16673301.

Cite the R Observatory

For a number measured here: a download total, a coverage figure, an archival date.

APA

Balamuta, J. J. (2026). R Observatory: Metrics for mlr3fselect version 1.7.0 [Data set]. HJJB, LLC. Data release v2026-10-19. https://doi.org/10.5281/zenodo.21843040

From data release v2026-10-19, which the citation names so these numbers can be found later. More on citing and the projects behind them.

Report a problem with this page →

Privacy choices

These apply to this browser and are stored on this device only. Nothing about your choice is sent to us.

Read the privacy policy