/MLJ.jl

A Julia machine learning framework

Primary LanguageJupyter NotebookOtherNOASSERTION

MLJ

A Machine Learning Framework for Julia

Build Status #mlj Documentation Binder 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
LIBSVM.jl LinearSVC, SVC, NuSVC, NuSVR, EpsilonSVR, OneClassSVM high also via ScikitLearn.jl
LightGBM.jl LightGBMClassifier, LightGBMRegressor high
MLJFlux.jl NeuralNetworkRegressor, NeuralNetworkClassifier, MultitargetNeuralNetworkRegressor, ImageClassifier experimental
MLJLinearModels.jl LinearRegressor, RidgeRegressor, LassoRegressor, ElasticNetRegressor, QuantileRegressor, HuberRegressor, RobustRegressor, LADRegressor, LogisticClassifier, MultinomialClassifier experimental
MLJModels.jl (builtins) StaticTransformer, FeatureSelector, FillImputer, UnivariateStandardizer, Standardizer, UnivariateBoxCoxTransformer, OneHotEncoder, ContinuousEncoder, ConstantRegressor, ConstantClassifier medium
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="https://github.com/tlienart/OpenSpecFun_jll.jl"))

Citing MLJ

Cite MLJ
@misc{blaom2020mlj,
    title={MLJ: A Julia package for composable machine learning},
    author={Anthony D. Blaom and Franz Kiraly and Thibaut Lienart and Yiannis Simillides and Diego Arenas and Sebastian J. Vollmer},
    year={2020},
    eprint={2007.12285},
    archivePrefix={arXiv},
    primaryClass={cs.LG}
}

Contributors

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.

License

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