Skip to content
Metric learning algorithms in Python
Python Shell
Branch: master
Clone or download


Travis-CI Build Status License PyPI version Code coverage

metric-learn: Metric Learning in Python

metric-learn contains efficient Python implementations of several popular supervised and weakly-supervised metric learning algorithms. As part of scikit-learn-contrib, the API of metric-learn is compatible with scikit-learn, the leading library for machine learning in Python. This allows to use all the scikit-learn routines (for pipelining, model selection, etc) with metric learning algorithms through a unified interface.


  • 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>=0.20.3

Optional dependencies

  • For SDML, using skggm will allow the algorithm to solve problematic cases (install from commit a0ed406).
  • For running the examples only: matplotlib


Run pip install metric-learn to download and install from PyPI.

Run python install for default installation.

Run pytest test to run all tests (you will need to have the pytest package installed).


See the sphinx documentation for full documentation about installation, API, usage, and examples.


If you use metric-learn in a scientific publication, we would appreciate citations to the following paper:

metric-learn: Metric Learning Algorithms in Python, de Vazelhes et al., arXiv:1908.04710, 2019.

Bibtex entry:

  title = {metric-learn: {M}etric {L}earning {A}lgorithms in {P}ython},
  author = {{de Vazelhes}, William and {Carey}, CJ and {Tang}, Yuan and
            {Vauquier}, Nathalie and {Bellet}, Aur{\'e}lien},
  institution = {arXiv:1908.04710},
  year = {2019}
You can’t perform that action at this time.