Package website: release | dev
Efficient, object-oriented programming on the building blocks of machine learning. Successor of mlr.
mlr3
is used in
the demos
and exercises.Install the last release from CRAN:
install.packages("mlr3")
Install the development version from GitHub:
::install_github("mlr-org/mlr3") remotes
If you want to get started with mlr3
, we recommend
installing the mlr3verse
meta-package which installs mlr3
and some of the most
important extension packages:
install.packages("mlr3verse")
library(mlr3)
# create learning task
= as_task_classif(species ~ ., data = palmerpenguins::penguins)
task_penguins task_penguins
## <TaskClassif:palmerpenguins::penguins> (344 x 8)
## * Target: species
## * Properties: multiclass
## * Features (7):
## - int (3): body_mass_g, flipper_length_mm, year
## - dbl (2): bill_depth_mm, bill_length_mm
## - fct (2): island, sex
# load learner and set hyperparameter
= lrn("classif.rpart", cp = .01) learner
# train/test split
= partition(task_penguins, ratio = 0.67)
split
# train the model
$train(task_penguins, split$train_set)
learner
# predict data
= learner$predict(task_penguins, split$test_set)
prediction
# calculate performance
$confusion prediction
## truth
## response Adelie Chinstrap Gentoo
## Adelie 146 5 0
## Chinstrap 6 63 1
## Gentoo 0 0 123
= msr("classif.acc")
measure $score(measure) prediction
## classif.acc
## 0.9651163
# 3-fold cross validation
= rsmp("cv", folds = 3L)
resampling
# run experiments
= resample(task_penguins, learner, resampling)
rr
# access results
$score(measure)[, .(task_id, learner_id, iteration, classif.acc)] rr
## task_id learner_id iteration classif.acc
## 1: palmerpenguins::penguins classif.rpart 1 0.8956522
## 2: palmerpenguins::penguins classif.rpart 2 0.9478261
## 3: palmerpenguins::penguins classif.rpart 3 0.9649123
$aggregate(measure) rr
## classif.acc
## 0.9361302
Consult the wiki for short descriptions and links to the respective repositories.
For beginners, we strongly recommend to install and load the mlr3verse package for a better user experience.
mlr was first released to CRAN in 2013. Its core design and architecture date back even further. The addition of many features has led to a feature creep which makes mlr hard to maintain and hard to extend. We also think that while mlr was nicely extensible in some parts (learners, measures, etc.), other parts were less easy to extend from the outside. Also, many helpful R libraries did not exist at the time mlr was created, and their inclusion would result in non-trivial API changes.
mlr
nicely.data.table
for fast and convenient data frame computations.data.table
and R6
, for this we
will make heavy use of list columns in data.tables.checkmate
.
Return types are documented, and mechanisms popular in base R which
“simplify” the result unpredictably (e.g., sapply()
or
drop
argument in [.data.frame
) are
avoided.mlr3
requires the following
packages at runtime:
parallelly
:
Helper functions for parallelization. No extra recursive
dependencies.future.apply
:
Resampling and benchmarking is parallelized with the future
abstraction interfacing many parallel backends.backports
:
Ensures backward compatibility with older R releases. Developed by
members of the mlr
team. No recursive dependencies.checkmate
:
Fast argument checks. Developed by members of the mlr
team.
No extra recursive dependencies.mlr3misc
:
Miscellaneous functions used in multiple mlr3 extension packages.
Developed by the mlr
team.paradox
:
Descriptions for parameters and parameter sets. Developed by the
mlr
team. No extra recursive dependencies.R6
:
Reference class objects. No recursive dependencies.data.table
:
Extension of R’s data.frame
. No recursive
dependencies.digest
(via mlr3misc
): Hash digests. No recursive
dependencies.uuid
:
Create unique string identifiers. No recursive dependencies.lgr
:
Logging facility. No extra recursive dependencies.mlr3measures
:
Performance measures. No extra recursive dependencies.mlbench
:
A collection of machine learning data sets. No dependencies.palmerpenguins
:
A classification data set about penguins, used on examples and provided
as a toy task. No dependencies.This R package is licensed under the LGPL-3. If you encounter problems using this software (lack of documentation, misleading or wrong documentation, unexpected behavior, bugs, …) or just want to suggest features, please open an issue in the issue tracker. Pull requests are welcome and will be included at the discretion of the maintainers.
Please consult the wiki for a style guide, a roxygen guide and a pull request guide.
If you use mlr3, please cite our JOSS article:
@Article{mlr3,
title = {{mlr3}: A modern object-oriented machine learning framework in {R}},
author = {Michel Lang and Martin Binder and Jakob Richter and Patrick Schratz and Florian Pfisterer and Stefan Coors and Quay Au and Giuseppe Casalicchio and Lars Kotthoff and Bernd Bischl},
journal = {Journal of Open Source Software},
year = {2019},
month = {dec},
doi = {10.21105/joss.01903},
url = {https://joss.theoj.org/papers/10.21105/joss.01903},
}