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 starting point for the general MLJ user is MLJ's documentation. This page contains information for developers of MLJ and related packages in the Julia machine learning eco-system.
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 for MLJ repositories. Repositories with dashed connections do not currently exist but are planned/proposed.
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!
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="https://github.com/tlienart/OpenSpecFun_jll.jl")).
@software{anthony_blaom_2019_3541506,
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 = {https://doi.org/10.5281/zenodo.3541506}
}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.