A Julia machine learning framework
Author alan-turing-institute
703 Stars
Updated Last
10 Months Ago
Started In
August 2018

A Machine Learning Framework for Julia

Build Status #mlj Documentation Cite MLJ

New to MLJ? Start here.

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 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  •  List of Wrapped Models  •  Known Issues  •  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.

List of Wrapped Models

MLJ provides access to to a wide variety of machine learning models. We are always looking for help adding new models or test existing ones. Currently available models are listed below; for the most up-to-date list, run using MLJ; models().

  • experimental: indicates the package is fairly new and/or is under active development; you can help by testing these packages and making them more robust,
  • medium: indicates the package is fairly mature but may benefit from optimisations and/or extra features; you can help by suggesting either,
  • high: indicates the package is very mature and functionalities are expected to have been fairly optimised and tested.
Package Models Maturity Note
Clustering.jl KMeans, KMedoids high
DecisionTree.jl DecisionTreeClassifier, DecisionTreeRegressor, AdaBoostStumpClassifier high
EvoTrees.jl EvoTreeRegressor, EvoTreeClassifier, EvoTreeCount, EvoTreeGaussian medium gradient boosting models
GLM.jl LinearRegressor, LinearBinaryClassifier, LinearCountRegressor medium
LightGBM.jl LightGBMClassifier, LightGBMRegressor high
LIBSVM.jl LinearSVC, SVC, NuSVC, NuSVR, EpsilonSVR, OneClassSVM high also via ScikitLearn.jl
MLJModels.jl (builtins) StaticTransformer, FeatureSelector, FillImputer, UnivariateStandardizer, Standardizer, UnivariateBoxCoxTransformer, OneHotEncoder, ContinuousEncoder, ConstantRegressor, ConstantClassifier medium
MLJLinearModels.jl LinearRegressor, RidgeRegressor, LassoRegressor, ElasticNetRegressor, QuantileRegressor, HuberRegressor, RobustRegressor, LADRegressor, LogisticClassifier, MultinomialClassifier experimental
MultivariateStats.jl RidgeRegressor, PCA, KernelPCA, ICA, LDA, BayesianLDA, SubspaceLDA, BayesianSubspaceLDA high
NaiveBayes.jl GaussianNBClassifier, MultinomialNBClassifier, HybridNBClassifier experimental
NearestNeighbors.jl KNNClassifier, KNNRegressor high
ParallelKMeans.jl KMeans experimental
ScikitLearn.jl ARDRegressor, AdaBoostClassifier, AdaBoostRegressor, AffinityPropagation, AgglomerativeClustering, BaggingClassifier, BaggingRegressor, BayesianLDA, BayesianQDA, BayesianRidgeRegressor, BernoulliNBClassifier, Birch, ComplementNBClassifier, DBSCAN, DummyClassifier, DummyRegressor, ElasticNetCVRegressor, ElasticNetRegressor, ExtraTreesClassifier, ExtraTreesRegressor, FeatureAgglomeration, GaussianNBClassifier, GaussianProcessClassifier, GaussianProcessRegressor, GradientBoostingClassifier, GradientBoostingRegressor, HuberRegressor, KMeans, KNeighborsClassifier, KNeighborsRegressor, LarsCVRegressor, LarsRegressor, LassoCVRegressor, LassoLarsCVRegressor, LassoLarsICRegressor, LassoLarsRegressor, LassoRegressor, LinearRegressor, LogisticCVClassifier, LogisticClassifier, MeanShift, MiniBatchKMeans, MultiTaskElasticNetCVRegressor, MultiTaskElasticNetRegressor, MultiTaskLassoCVRegressor, MultiTaskLassoRegressor, MultinomialNBClassifier, OPTICS, OrthogonalMatchingPursuitCVRegressor, OrthogonalMatchingPursuitRegressor, PassiveAggressiveClassifier, PassiveAggressiveRegressor, PerceptronClassifier, ProbabilisticSGDClassifier, RANSACRegressor, RandomForestClassifier, RandomForestRegressor, RidgeCVClassifier, RidgeCVRegressor, RidgeClassifier, RidgeRegressor, SGDClassifier, SGDRegressor, SVMClassifier, SVMLClassifier, SVMLRegressor, SVMNuClassifier, SVMNuRegressor, SVMRegressor, SpectralClustering, TheilSenRegressor high
XGBoost.jl XGBoostRegressor, XGBoostClassifier, XGBoostCount high

Note (†): some models are missing, your help is welcome to complete the interface. Get in touch with Thibaut Lienart on Slack if you would like to help, thanks!

Known Issues

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; Pkg.develop(PackageSpec(url="")).

Citing MLJ

Cite MLJ
  author       = {Anthony Blaom and
                  Franz Kiraly and
                  Thibaut Lienart and
                  Sebastian Vollmer},
  title        = {alan-turing-institute/MLJ.jl: v0.5.3},
  month        = nov,
  year         = 2019,
  publisher    = {Zenodo},
  version      = {v0.5.3},
  doi          = {10.5281/zenodo.3541506},
  url          = {}


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.