Skip to content
Switch branches/tags

A Machine Learning Framework for Julia

Build Status #mlj Documentation Binder DOI

New to MLJ? Start here.

Wanting to integrate an existing machine learning model into the MLJ framework? Start here.

The remaining information on this page will be of interest primarily to developers interested in contributing to core packages in the MLJ ecosystem, whose organization is described further below.

MLJ (Machine Learning in Julia) is a toolbox written in Julia providing a common interface and meta-algorithms for selecting, tuning, evaluating, composing and comparing over 150 machine learning models written in Julia and other languages. MLJ is released under the MIT licensed and sponsored by the Alan Turing Institute.

MLJ Universe  •  Known Issues  •  Customizing Behavior  •  Citing MLJ

The MLJ Universe

The functionality of MLJ is distributed over a number of repositories illustrated in the dependency chart below.

Contributing  •  Code Organization  •  Road Map

MLJ  •  MLJBase  •  MLJModelInterface  •  MLJModels  •  MLJTuning  •  MLJLinearModels  •  MLJFlux
MLJTutorials  •  MLJScientificTypes  •  ScientificTypes

Dependency Chart

Dependency chart for MLJ repositories. Repositories with dashed connections do not currently exist but are planned/proposed.

Known Issues

ScikitLearn/MKL issue

For users of Mac OS using Julia 1.3 or higher, using ScikitLearn models can lead to unexpected MKL errors due to an issue not related to MLJ. See this Julia Discourse discussion and this issue for context.

A temporary workaround for this issue is to force the installation of an older version of the OpenSpecFun_jll library. To install an appropriate version, activate your MLJ environment and run

  using Pkg;

Serialization for composite models with component models with custom serialization

See here. Workaround: Instead of XGBoost models (the chief known case) use models from the pure Julia package EvoTrees.

Customizing behavior

To customize behaviour of MLJ you will need to clone the relevant component package (e.g., MLJBase.jl) - or a fork thereof - and modify your local julia environment to use your local clone in place of the official release. For example, you might proceed something like this:

using Pkg
Pkg.activate("my_MLJ_enf", shared=true)

To test your local clone, do


For more on package management, see .

Citing MLJ


  doi = {10.21105/joss.02704},
  url = {},
  year = {2020},
  publisher = {The Open Journal},
  volume = {5},
  number = {55},
  pages = {2704},
  author = {Anthony D. Blaom and Franz Kiraly and Thibaut Lienart and Yiannis Simillides and Diego Arenas and Sebastian J. Vollmer},
  title = {{MLJ}: A Julia package for composable machine learning},
  journal = {Journal of Open Source Software}


Core design: A. Blaom, F. Kiraly, S. Vollmer

Active maintainers: A. Blaom, T. Lienart, S. Okon

Active collaborators: D. Arenas, D. Buchaca, J. Hoffimann, S. Okon, J. Samaroo, S. Vollmer

Past collaborators: D. Aluthge, E. Barp, G. Bohner, M. K. Borregaard, V. Churavy, H. Devereux, M. Giordano, M. Innes, F. Kiraly, M. Nook, Z. Nugent, P. Oleśkiewicz, A. Shridar, Y. Simillides, A. Sengupta, A. Stechemesser.


MLJ is supported by the Alan Turing Institute and released under the MIT "Expat" License.