Metric Learning algorithms in Python.
- Large Margin Nearest Neighbor (LMNN)
- Information Theoretic Metric Learning (ITML)
- Sparse Determinant Metric Learning (SDML)
- Least Squares Metric Learning (LSML)
- Neighborhood Components Analysis (NCA)
- Local Fisher Discriminant Analysis (LFDA)
- Relative Components Analysis (RCA)
- Metric Learning for Kernel Regression (MLKR)
- Mahalanobis Metric for Clustering (MMC)
- Python 2.7+, 3.4+
- numpy, scipy, scikit-learn
- (for running the examples only: matplotlib)
pip install metric-learn to download and install from PyPI.
python setup.py install for default installation.
pytest test to run all tests (you will need to have the
For full usage examples, see the sphinx documentation.
Each metric is a subclass of
BaseMetricLearner, which provides
default implementations for the methods
transform. Subclasses must provide an implementation for either
For an instance of a metric learner named
foo learning from a set of
foo.metric() returns a
d x d
M such that the distance between vectors
pdist function, this would look like
pdist(X, metric='mahalanobis', VI=foo.metric()).
In the same scenario,
foo.transformer() returns a
d x d
L such that a vector
x can be represented in the learned
space as the vector
For convenience, the function
foo.transform(X) is provided for
converting a matrix of points (
X) into the learned space, in which
standard Euclidean distance can be used.
If a recent version of the Shogun Python modular (
is available, the LMNN implementation will use the fast C++ version from
there. The two implementations differ slightly, and the C++ version is