Skip to content

Latest commit

 

History

History
83 lines (70 loc) · 3.96 KB

ORGANIZATION.md

File metadata and controls

83 lines (70 loc) · 3.96 KB

Code Organization

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

Repositories of some possible interest outside of MLJ, or beyond its conventional use, are marked with a ⟂ symbol:

  • MLJ.jl is the general user's point-of-entry for choosing, loading, composing, evaluating and tuning machine learning models. It pulls in most code from other repositories described below. (A current exception is homogeneous ensembles code, to be migrated to MLJBase or its own repository MLJEnsembles.) MLJ also hosts the MLJ manual which documents functionality across the repositories, with the exception of ScientificTypes, and MLJScientific types which host their own documentation. (The MLJ manual and MLJTutorials do provide overviews of scientific types.)

  • MLJModelInterface.jl is a lightweight package imported by packages implementing MLJ's interface for their machine learning models. It's sole dependency is ScientificTypes, which is a tiny package with no dependencies.

  • (⟂) MLJBase.jl is a large repository with two main purposes: (i) to give "dummy" methods defined in MLJModelInterface their intended functionality (which depends on third party packages, such as Tables.jl, Distributions.jl and CategoricalArrays.jl); and (ii) provide functionality essential to the MLJ user that has not been relegated to its own "satellite" repository for some reason. See the MLJBase.jl readme for a detailed description of MLJBase's contents.

  • MLJModels.jl hosts the MLJ registry, which contains metadata on all the models the MLJ user can search and load from MLJ. Moreover, it provides the functionality for loading model code from MLJ on demand. Finally, it furnishes model interfaces for a number of third party model providers not implementing interfaces natively, such as DecisionTree.jl, ScikitLearn.jl or XGBoost.jl. These packages are not imported by MLJModels and are not dependencies from the point-of-view of current package management.

  • MLJTuning.jl provides MLJ's interface for hyper-parameter tuning strategies, and selected implementations, such as grid search.

  • (⟂) MLJLinearModels.jl is an experimental package for a wide range of julia-native penalized linear models such as Lasso, Elastic-Net, Robust regression, LAD regression, etc.

  • MLJFlux.jl an experimental package for using neural-network models, built with Flux.jl, in MLJ.

  • (⟂) ScientificTypes.jl is a tiny, zero-dependency package providing "scientific" types, such as Continuous, OrderedFactor, Image and Table. It's purpose is to formalize conventions around the scientific interpretation of ordinary machine types, such as Float32 and DataFrame.

  • (⟂) MLJScientificTypes.jl articulates MLJ's own convention for the scientific interpretation of data.

  • MLJTutorials collects tutorials on how to use MLJ.