# ml-distance

Distance functions to compare vectors.

## Installation

`$ npm i ml-distance`

## Methods

### Distances

`euclidean(p, q)`

Returns the euclidean distance between vectors p and q

`manhattan(p, q)`

Returns the city block distance between vectors p and q

`minkowski(p, q, d)`

Returns the Minkowski distance between vectors p and q for order d

`chebyshev(p, q)`

Returns the Chebyshev distance between vectors p and q

`sorensen(p, q)`

Returns the Sørensen distance between vectors p and q

`gower(p, q)`

Returns the Gower distance between vectors p and q

`soergel(p, q)`

Returns the Soergel distance between vectors p and q

`kulczynski(p, q)`

Returns the Kulczynski distance between vectors p and q

`canberra(p, q)`

Returns the Canberra distance between vectors p and q

`lorentzian(p, q)`

Returns the Lorentzian distance between vectors p and q

`intersection(p, q)`

Returns the Intersection distance between vectors p and q

`waveHedges(p, q)`

Returns the Wave Hedges distance between vectors p and q

`czekanowski(p, q)`

Returns the Czekanowski distance between vectors p and q

`motyka(p, q)`

Returns the Motyka distance between vectors p and q

`ruzicka(p, q)`

Returns the Ruzicka similarity between vectors p and q

`tanimoto(p, q, [bitVector])`

Returns the Tanimoto distance between vectors p and q, and accepts the bitVector use, see the test case for an example

`innerProduct(p, q)`

Returns the Inner Product similarity between vectors p and q

`harmonicMean(p, q)`

Returns the Harmonic mean similarity between vectors p and q

`cosine(p, q)`

Returns the Cosine similarity between vectors p and q

`kumarHassebrook(p, q)`

Returns the Kumar-Hassebrook similarity between vectors p and q

`jaccard(p, q)`

Returns the Jaccard distance between vectors p and q

`dice(p, q)`

Returns the Dice distance between vectors p and q

`fidelity(p, q)`

Returns the Fidelity similarity between vectors p and q

`bhattacharyya(p, q)`

Returns the Bhattacharyya distance between vectors p and q

`hellinger(p, q)`

Returns the Hellinger distance between vectors p and q

`matusita(p, q)`

Returns the Matusita distance between vectors p and q

`squaredChord(p, q)`

Returns the Squared-chord distance between vectors p and q

`squaredEuclidean(p, q)`

Returns the squared euclidean distance between vectors p and q

`pearson(p, q)`

Returns the Pearson distance between vectors p and q

`neyman(p, q)`

Returns the Neyman distance between vectors p and q

`squared(p, q)`

Returns the Squared distance between vectors p and q

`probabilisticSymmetric(p, q)`

Returns the Probabilistic Symmetric distance between vectors p and q

`divergence(p, q)`

Returns the Divergence distance between vectors p and q

`clark(p, q)`

Returns the Clark distance between vectors p and q

`additiveSymmetric(p, q)`

Returns the Additive Symmetric distance between vectors p and q

`kullbackLeibler(p, q)`

Returns the Kullback-Leibler distance between vectors p and q

`jeffreys(p, q)`

Returns the Jeffreys distance between vectors p and q

`kdivergence(p, q)`

Returns the K divergence distance between vectors p and q

`topsoe(p, q)`

Returns the Topsøe distance between vectors p and q

`jensenShannon(p, q)`

Returns the Jensen-Shannon distance between vectors p and q

`jensenDifference(p, q)`

Returns the Jensen difference distance between vectors p and q

`taneja(p, q)`

Returns the Taneja distance between vectors p and q

`kumarJohnson(p, q)`

Returns the Kumar-Johnson distance between vectors p and q

`avg(p, q)`

Returns the average of city block and Chebyshev distances between vectors p and q

### Similarities

`intersection(p, q)`

Returns the Intersection similarity between vectors p and q

`czekanowski(p, q)`

Returns the Czekanowski similarity between vectors p and q

`motyka(p, q)`

Returns the Motyka similarity between vectors p and q

`kulczynski(p, q)`

Returns the Kulczynski similarity between vectors p and q

`squaredChord(p, q)`

Returns the Squared-chord similarity between vectors p and q

`jaccard(p, q)`

Returns the Jaccard similarity between vectors p and q

`dice(p, q)`

Returns the Dice similarity between vectors p and q

`tanimoto(p, q, [bitVector])`

Returns the Tanimoto similarity between vectors p and q, and accepts the bitVector use, see the test case for an example

`tree(a,b, from, to, [options])`

Refer to ml-tree-similarity

## Contributing

A new metric should normally be in its own file in the src/dist directory. There should be a corresponding test file in test/dist.

The metric should be then added in the exports of src/index.js with a relatively small but understandable name (use camelCase).

It should also be added to this README with either a link to the formula or an inline description.