Contributing to the MLJ Machine Learning Project

Contributions to MLJ are most welcome. Queries can be made through issues or the Julia slack channel, #mlj.

Conventions

Most larger MLJ repositories follow this git work-flow. In all cases please make all pull requests to the default branch of the appropriate repo (branch appearing on the repo's landing page). This is dev for larger repos, and master otherwise. This includes changes to documentation.

Contributors are kindly requested to adhere to the Blue style guide, with line widths capped at 92 characters.

Brief Design Overview

MLJ has a basement level model interface, which must be implemented for each new learning algorithm. Formally, each model is a mutable struct storing hyperparameters and the implementer defines model-dispatched fit and predict/transform methods; for details, see here. The general user interacts using machines which bind models with data and have an internal state reflecting the outcomes of applying fit! and predict/transform methods on them. The model interface is pure "functional"; the machine interface more "object-oriented".

A generalization of machine, called a nodal machine, is a key element of learning networks which combine several models together, and form the basis for specifying new composite model types. See here for more on these.

MLJ code is now spread over multiple repositories.

Available Projects

Developers that can demonstrate prior experience in Julia and machine learning are welcome to consider working on one of these projects.

Machine Learning in Predictive Survival Analysis

Deeper Bayesian Integration

Tracking and sharing MLJ workflows using MLflow