README.md

mlr3

Package website: release \| dev

Efficient, object-oriented programming on the building blocks of machine learning. Successor of mlr.

tic DOI CRAN
Status StackOverflow Mattermost

Resources (for users and developers)

Installation

Install the last release from CRAN:

install.packages("mlr3")

Install the development version from GitHub:

remotes::install_github("mlr-org/mlr3")

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")

Example

Constructing Learners and Tasks

library(mlr3)

# create learning task
task_penguins <- TaskClassif$new(id = "penguins", backend = palmerpenguins::penguins, target = "species")
task_penguins
## <TaskClassif: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
learner <- lrn("classif.rpart", cp = .01)

Basic train + predict

# train/test split
train_set <- sample(task_penguins$nrow, 0.8 * task_penguins$nrow)
test_set <- setdiff(seq_len(task_penguins$nrow), train_set)

# train the model
learner$train(task_penguins, row_ids = train_set)

# predict data
prediction <- learner$predict(task_penguins, row_ids = test_set)

# calculate performance
prediction$confusion
##            truth
## response    Adelie Chinstrap Gentoo
##   Adelie        32         2      0
##   Chinstrap      1         8      0
##   Gentoo         0         3     23
measure <- msr("classif.acc")
prediction$score(measure)
## classif.acc 
##   0.9130435

Resample

# automatic resampling
resampling <- rsmp("cv", folds = 3L)
rr <- resample(task_penguins, learner, resampling)
rr$score(measure)
##                 task  task_id                   learner    learner_id
## 1: <TaskClassif[49]> penguins <LearnerClassifRpart[37]> classif.rpart
## 2: <TaskClassif[49]> penguins <LearnerClassifRpart[37]> classif.rpart
## 3: <TaskClassif[49]> penguins <LearnerClassifRpart[37]> classif.rpart
##            resampling resampling_id iteration              prediction
## 1: <ResamplingCV[19]>            cv         1 <PredictionClassif[20]>
## 2: <ResamplingCV[19]>            cv         2 <PredictionClassif[20]>
## 3: <ResamplingCV[19]>            cv         3 <PredictionClassif[20]>
##    classif.acc
## 1:   0.8956522
## 2:   0.9130435
## 3:   0.9473684
rr$aggregate(measure)
## classif.acc 
##    0.918688

Extension Packages

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.

Why a rewrite?

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.

Design principles

Contributing to mlr3

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.

Citing mlr3

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},
}


Try the mlr3 package in your browser

Any scripts or data that you put into this service are public.

mlr3 documentation built on Nov. 16, 2021, 5:07 p.m.