Files
mlpack/doc/index.md
T

190 lines
7.4 KiB
Markdown

# Documentation for mlpack
<!--
This file contains the landing page for mlpack documentation. Note that if you
change any section headers, or add any new algorithms, the sidebar in
sidebar.html will need to be manually modified!
-->
## A fast, flexible machine learning library
mlpack is an intuitive, fast, and flexible header-only C++ machine learning
library with bindings to other languages. It aims to provide fast, lightweight
implementations of both common and cutting-edge machine learning algorithms.
mlpack's lightweight C++ implementation makes it ideal for deployment, and it
can also be used for interactive prototyping via C++ notebooks (these can be
seen in action on mlpack's [homepage](https://www.mlpack.org/)).
In addition to its [powerful C++ interface](quickstart/cpp.md), mlpack also
provides [command-line programs](quickstart/cli.md), and bindings to the
[Python](quickstart/python.md), [R](quickstart/r.md),
[Julia](quickstart/julia.md), and [Go](quickstart/go.md) languages.
_If you use mlpack, please [cite the software](citation.md)._
## mlpack basics
Installing mlpack can be done using the
[instructions in the README](README.md#3-installing-and-using-mlpack-in-c);
or the [Windows build guide](user/build_windows.md).
The following basic guides are *highly recommended* before using mlpack.
* ***First steps***:
- [mlpack C++ quickstart](quickstart/cpp.md): create a couple simple C++
programs that use mlpack
- [Sample Windows mlpack C++ application](user/sample_ml_app.md): create a
working mlpack Windows program using Visual Studio
* ***Basics of matrices and data in mlpack***:
- [Matrices and data in mlpack](user/matrices.md)
- [Loading and saving mlpack objects](user/load_save.md)
* ***Reference for mlpack core classes***:
- [Core mlpack documentation](user/core.md)
* ***Using mlpack natively with our extensions in Python, R, CLI, Julia, and Go***:
- [Links to quickstarts and references](#bindings-to-other-languages)
## mlpack algorithm documentation
Documentation for each machine learning algorithm that mlpack implements is
detailed in the sections below.
* [Classification algorithms](#classification-algorithms): classify points as
discrete labels (`0`, `1`, `2`, ...).
* [Regression algorithms](#regression-algorithms): predict continuous values.
* [Clustering algorithms](#clustering-algorithms): group points into clusters.
* [Geometric algorithms](#geometric-algorithms): computations based on distance
metrics (nearest neighbors, kernel density estimation, etc.).
* [Preprocessing utilities](#preprocessing-utilities): prepare data for machine
learning algorithms.
* [Transformations](#transformations): transform data from one space to
another (principal components analysis, etc.).
* [Modeling utilities](#modeling-utilities): cross-validation, hyperparameter
tuning, etc.
### Classification algorithms
Classify points as discrete labels (`0`, `1`, `2`, ...).
* [`AdaBoost`](user/methods/adaboost.md): Adaptive Boosting
* [`DecisionTree`](user/methods/decision_tree.md): ID3-style decision tree
classifier
* [`HoeffdingTree`](user/methods/hoeffding_tree.md): streaming/incremental
decision tree classifier
* [`LinearSVM`](user/methods/linear_svm.md): simple linear support vector
machine classifier
* [`LogisticRegression`](user/methods/logistic_regression.md): L2-regularized
logistic regression (two-class only)
* [`NaiveBayesClassifier`](user/methods/naive_bayes_classifier.md): simple
multi-class naive Bayes classifier
* [`Perceptron`](user/methods/perceptron.md): simple Perceptron classifier
* [`RandomForest`](user/methods/random_forest.md): parallelized random forest
classifier
* [`SoftmaxRegression`](user/methods/softmax_regression.md): L2-regularized
softmax regression (i.e. multi-class logistic regression)
### Regression algorithms
Predict continuous values.
* [`BayesianLinearRegression`](user/methods/bayesian_linear_regression.md):
Bayesian L2-penalized linear regression
* [`DecisionTreeRegressor`](user/methods/decision_tree_regressor.md): ID3-style
decision tree regressor
* [`LARS`](user/methods/lars.md): Least Angle Regression (LARS), L1-regularized
and L2-regularized
* [`LinearRegression`](user/methods/linear_regression.md): L2-regularized
linear regression (ridge regression)
### Clustering algorithms
Group points into clusters.
<!-- TODO: add some -->
### Geometric algorithms
Computations based on distance metrics.
<!-- TODO: add some -->
### Preprocessing utilities
Prepare data for machine learning algorithms.
<!-- TODO: add some -->
### Transformations
Transform data from one space to another.
* [`LocalCoordinateCoding`](user/methods/local_coordinate_coding.md): local
coordinate coding with dictionary learning
* [`NMF`](user/methods/nmf.md): non-negative matrix factorization
* [`PCA`](user/methods/pca.md): principal components analysis
* [`SparseCoding`](user/methods/sparse_coding.md): sparse coding with
dictionary learning
### Modeling utilities
Tools for assembling a full data science pipeline.
* [Cross-validation](user/cv.md): k-fold cross-validation tools for any mlpack
algorithm
* [Hyperparameter tuning](user/hpt.md): generic hyperparameter tuner to find
good hyperparameters for any mlpack algorithm
## Bindings to other languages
mlpack's bindings to other languages have less complete functionality than
mlpack in C++, but almost all the same algorithms are available.
| ***Python*** | -- | [quickstart](quickstart/python.md) | -- | [reference](user/bindings/python.md) |
| ***Julia*** | -- | [quickstart](quickstart/julia.md) | -- | [reference](user/bindings/julia.md) |
| ***R*** | -- | [quickstart](quickstart/r.md) | -- | [reference](user/bindings/r.md)
| ***Command-line programs*** | -- | [quickstart](quickstart/cli.md) | -- | [reference](user/bindings/cli.md) |
| ***Go*** | -- | [quickstart](quickstart/go.md) | -- | [reference](user/bindings/go.md) |
## Examples and further documentation
* [mlpack examples repository](https://github.com/mlpack/examples/): numerous
fully-working example applications of mlpack, in C++ and other languages.
* [mlpack models repository](https://github.com/mlpack/models/): complex models
in C++ built with mlpack
For additional documentation beyond what is covered in all the resources above,
the source code should be consulted. Each method is fully documented.
## Developer documentation
The following general documentation can be useful if you are interested in
contributing to mlpack:
* [The mlpack community](developer/community.md)
* [mlpack and Google Summer of Code](developer/gsoc.md)
Throughout the codebase, mlpack uses some common template parameter policies.
These are documented below.
* [The `ElemType` policy](developer/elemtype.md): element types for data
* [The `MetricType` policy](developer/metrics.md): distance metrics
* [The `KernelType` policy](developer/kernels.md): kernel functions
* [The `TreeType` policy](developer/trees.md): space trees (ball trees,
KD-trees, etc.)
In addition, the following documentation may be useful when developing bindings
for other languages:
* [Timers](developer/timer.md): timing parts of bindings
* [Writing an mlpack binding](developer/iodoc.md): simple examples of mlpack
bindings
* [Automatic bindings](developer/bindings.md): details on mlpack's automatic
binding generator system.
## Changelog
For a list of changes in each version of mlpack, see the
[changelog](HISTORY.md).