Maintained by Zakodium
Distance functions to compare vectors.
$ npm i ml-distance
Returns the euclidean distance between vectors p and q
d ( p , q ) = ∑ i = 1 n ( p i − q i ) 2 d(p,q)=\sqrt{\sum\limits_{i=1}^{n}(p_i-q_i)^2} d ( p , q ) = i = 1 ∑ n ( p i − q i ) 2
Returns the city block distance between vectors p and q
d ( p , q ) = ∑ i = 1 n ∣ p i − q i ∣ d(p,q)=\sum\limits_{i=1}^{n}{\left|p_i-q_i\right|} d ( p , q ) = i = 1 ∑ n ∣ p i − q i ∣
Returns the Minkowski distance between vectors p and q for order d
Returns the Chebyshev distance between vectors p and q
d ( p , q ) = max i ( ∣ p i − q i ∣ ) d(p,q)=\max\limits_i(|p_i-q_i|) d ( p , q ) = i max ( ∣ p i − q i ∣ )
Returns the Sørensen distance between vectors p and q
d ( p , q ) = ∑ i = 1 n ∣ p i − q i ∣ ∑ i = 1 n p i + q i d(p,q)=\frac{\sum\limits_{i=1}^{n}{\left|p_i-q_i\right|}}{\sum\limits_{i=1}^{n}{p_i+q_i}} d ( p , q ) = i = 1 ∑ n p i + q i i = 1 ∑ n ∣ p i − q i ∣
Returns the Gower distance between vectors p and q
d ( p , q ) = ∑ i = 1 n ∣ p i − q i ∣ n d(p,q)=\frac{\sum\limits_{i=1}^{n}{\left|p_i-q_i\right|}}{n} d ( p , q ) = n i = 1 ∑ n ∣ p i − q i ∣
Returns the Soergel distance between vectors p and q
d ( p , q ) = ∑ i = 1 n ∣ p i − q i ∣ m a x ( p i , q i ) d(p,q)=\frac{\sum\limits_{i=1}^{n}{\left|p_i-q_i\right|}}{max(p_i,q_i)} d ( p , q ) = ma x ( p i , q i ) i = 1 ∑ n ∣ p i − q i ∣
Returns the Kulczynski distance between vectors p and q
d ( p , q ) = ∑ i = 1 n ∣ p i − q i ∣ m i n ( p i , q i ) d(p,q)=\frac{\sum\limits_{i=1}^{n}{\left|p_i-q_i\right|}}{min(p_i,q_i)} d ( p , q ) = min ( p i , q i ) i = 1 ∑ n ∣ p i − q i ∣
Returns the Canberra distance between vectors p and q
d ( p , q ) = ∑ i = 1 n ∣ p i − q i ∣ p i + q i d(p,q)=\sum\limits_{i=1}^{n}\frac{\left|{p_i-q_i}\right|}{p_i+q_i} d ( p , q ) = i = 1 ∑ n p i + q i ∣ p i − q i ∣
Returns the Lorentzian distance between vectors p and q
d ( p , q ) = ∑ i = 1 n ln ( ∣ p i − q i ∣ + 1 ) d(p,q)=\sum\limits_{i=1}^{n}\ln(\left|{p_i-q_i}\right|+1) d ( p , q ) = i = 1 ∑ n ln ( ∣ p i − q i ∣ + 1 )
Returns the Intersection distance between vectors p and q
d ( p , q ) = 1 − ∑ i = 1 n m i n ( p i , q i ) d(p,q)=1-\sum\limits_{i=1}^{n}min(p_i,q_i) d ( p , q ) = 1 − i = 1 ∑ n min ( p i , q i )
Returns the Wave Hedges distance between vectors p and q
d ( p , q ) = ∑ i = 1 n ( 1 − m i n ( p i , q i ) m a x ( p i , q i ) ) d(p,q)=\sum\limits_{i=1}^{n}\left(1-\frac{min(p_i,q_i)}{max(p_i,q_i)}\right) d ( p , q ) = i = 1 ∑ n ( 1 − ma x ( p i , q i ) min ( p i , q i ) )
Returns the Czekanowski distance between vectors p and q
d ( p , q ) = 1 − 2 ∑ i = 1 n m i n ( p i , q i ) ∑ i = 1 n p i + q i d(p,q)=1-\frac{2\sum\limits_{i=1}^{n}{min(p_i,q_i)}}{\sum\limits_{i=1}^{n}{p_i+q_i}} d ( p , q ) = 1 − i = 1 ∑ n p i + q i 2 i = 1 ∑ n min ( p i , q i )
Returns the Motyka distance between vectors p and q
d ( p , q ) = 1 − ∑ i = 1 n m i n ( p i , q i ) ∑ i = 1 n p i + q i d(p,q)=1-\frac{\sum\limits_{i=1}^{n}{min(p_i,q_i)}}{\sum\limits_{i=1}^{n}{p_i+q_i}} d ( p , q ) = 1 − i = 1 ∑ n p i + q i i = 1 ∑ n min ( p i , q i )
Note: distance between 2 identical vectors is 0.5 !
Returns the Ruzicka similarity between vectors p and q
d ( p , q ) = ∑ i = 1 n m a x ( p i , q i ) ∑ i = 1 n m i n ( p i , q i ) d(p,q)=\frac{\sum\limits_{i=1}^{n}{max(p_i,q_i)}}{\sum\limits_{i=1}^{n}{min(p_i,q_i)}} d ( p , q ) = i = 1 ∑ n min ( p i , q i ) i = 1 ∑ n ma x ( p i , q i )
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
Returns the Inner Product similarity between vectors p and q
s ( p , q ) = ∑ i = 1 n p i ⋅ q i s(p,q)=\sum\limits_{i=1}^{n}{p_i\cdot{q_i}} s ( p , q ) = i = 1 ∑ n p i ⋅ q i
Returns the Harmonic mean similarity between vectors p and q
d ( p , q ) = 2 ∑ i = 1 n p i ⋅ q i p i + q i d(p,q)=2\sum\limits_{i=1}^{n}\frac{p_i\cdot{q_i}}{p_i+q_i} d ( p , q ) = 2 i = 1 ∑ n p i + q i p i ⋅ q i
Returns the Cosine similarity between vectors p and q
d ( p , q ) = ∑ i = 1 n p i ⋅ q i ∑ i = 1 n p i 2 ∑ i = 1 n q i 2 d(p,q)=\frac{\sum\limits_{i=1}^{n}{p_i\cdot{q_i}}}{\sqrt{\sum\limits_{i=1}^{n}{p_i^2}}\sqrt{\sum\limits_{i=1}^{n}{q_i^2}}} d ( p , q ) = i = 1 ∑ n p i 2 i = 1 ∑ n q i 2 i = 1 ∑ n p i ⋅ q i
Returns the Kumar-Hassebrook similarity between vectors p and q
d ( p , q ) = ∑ i = 1 n p i ⋅ q i ∑ i = 1 n p i 2 + ∑ i = 1 n q i 2 − ∑ i = 1 n p i ⋅ q i d(p,q)=\frac{\sum\limits_{i=1}^{n}{p_i\cdot{q_i}}}{\sum\limits_{i=1}^{n}{p_i^2}+\sum\limits_{i=1}^{n}{q_i^2}-\sum\limits_{i=1}^{n}{p_i\cdot{q_i}}} d ( p , q ) = i = 1 ∑ n p i 2 + i = 1 ∑ n q i 2 − i = 1 ∑ n p i ⋅ q i i = 1 ∑ n p i ⋅ q i
Returns the Jaccard distance between vectors p and q
d ( p , q ) = 1 − ∑ i = 1 n p i ⋅ q i ∑ i = 1 n p i 2 + ∑ i = 1 n q i 2 − ∑ i = 1 n p i ⋅ q i d(p,q)=1-\frac{\sum\limits_{i=1}^{n}{p_i\cdot{q_i}}}{\sum\limits_{i=1}^{n}{p_i^2}+\sum\limits_{i=1}^{n}{q_i^2}-\sum\limits_{i=1}^{n}{p_i\cdot{q_i}}} d ( p , q ) = 1 − i = 1 ∑ n p i 2 + i = 1 ∑ n q i 2 − i = 1 ∑ n p i ⋅ q i i = 1 ∑ n p i ⋅ q i
Returns the Dice distance between vectors p and q
d ( p , q ) = 1 − ∑ i = 1 n ( p i − q i ) 2 ∑ i = 1 n p i 2 + ∑ i = 1 n q i 2 d(p,q)=1-\frac{\sum\limits_{i=1}^{n}{(p_i-q_i)^2}}{\sum\limits_{i=1}^{n}{p_i^2}+\sum\limits_{i=1}^{n}{q_i^2}} d ( p , q ) = 1 − i = 1 ∑ n p i 2 + i = 1 ∑ n q i 2 i = 1 ∑ n ( p i − q i ) 2
Returns the Fidelity similarity between vectors p and q
d ( p , q ) = ∑ i = 1 n p i ⋅ q i d(p,q)=\sum\limits_{i=1}^{n}{\sqrt{p_i\cdot{q_i}}} d ( p , q ) = i = 1 ∑ n p i ⋅ q i
Returns the Bhattacharyya distance between vectors p and q
d ( p , q ) = − ln ( ∑ i = 1 n p i ⋅ q i ) d(p,q)=-\ln\left(\sum\limits_{i=1}^{n}{\sqrt{p_i\cdot{q_i}}}\right) d ( p , q ) = − ln ( i = 1 ∑ n p i ⋅ q i )
Returns the Hellinger distance between vectors p and q
d ( p , q ) = 2 ⋅ 1 − ∑ i = 1 n p i ⋅ q i d(p,q)=2\cdot\sqrt{1-\sum\limits_{i=1}^{n}{\sqrt{p_i\cdot{q_i}}}} d ( p , q ) = 2 ⋅ 1 − i = 1 ∑ n p i ⋅ q i
Returns the Matusita distance between vectors p and q
d ( p , q ) = 2 − 2 ⋅ ∑ i = 1 n p i ⋅ q i d(p,q)=\sqrt{2-2\cdot\sum\limits_{i=1}^{n}{\sqrt{p_i\cdot{q_i}}}} d ( p , q ) = 2 − 2 ⋅ i = 1 ∑ n p i ⋅ q i
Returns the Squared-chord distance between vectors p and q
d ( p , q ) = ∑ i = 1 n ( p i − q i ) 2 d(p,q)=\sum\limits_{i=1}^{n}{(\sqrt{p_i}-\sqrt{q_i})^2} d ( p , q ) = i = 1 ∑ n ( p i − q i ) 2
Returns the squared euclidean distance between vectors p and q
d ( p , q ) = ∑ i = 1 n ( p i − q i ) 2 d(p,q)=\sum\limits_{i=1}^{n}{(p_i-q_i)^2} d ( p , q ) = i = 1 ∑ n ( p i − q i ) 2
Returns the Pearson distance between vectors p and q
d ( p , q ) = ∑ i = 1 n ( p i − q i ) 2 q i d(p,q)=\sum\limits_{i=1}^{n}{\frac{(p_i-q_i)^2}{q_i}} d ( p , q ) = i = 1 ∑ n q i ( p i − q i ) 2
Returns the Neyman distance between vectors p and q
d ( p , q ) = ∑ i = 1 n ( p i − q i ) 2 p i d(p,q)=\sum\limits_{i=1}^{n}{\frac{(p_i-q_i)^2}{p_i}} d ( p , q ) = i = 1 ∑ n p i ( p i − q i ) 2
Returns the Squared distance between vectors p and q
d ( p , q ) = ∑ i = 1 n ( p i − q i ) 2 p i + q i d(p,q)=\sum\limits_{i=1}^{n}{\frac{(p_i-q_i)^2}{p_i+q_i}} d ( p , q ) = i = 1 ∑ n p i + q i ( p i − q i ) 2
probabilisticSymmetric(p, q)
Returns the Probabilistic Symmetric distance between vectors p and q
d ( p , q ) = 2 ⋅ ∑ i = 1 n ( p i − q i ) 2 p i + q i d(p,q)=2\cdot\sum\limits_{i=1}^{n}{\frac{(p_i-q_i)^2}{p_i+q_i}} d ( p , q ) = 2 ⋅ i = 1 ∑ n p i + q i ( p i − q i ) 2
Returns the Divergence distance between vectors p and q
d ( p , q ) = 2 ⋅ ∑ i = 1 n ( p i − q i ) 2 ( p i + q i ) 2 d(p,q)=2\cdot\sum\limits_{i=1}^{n}{\frac{(p_i-q_i)^2}{(p_i+q_i)^2}} d ( p , q ) = 2 ⋅ i = 1 ∑ n ( p i + q i ) 2 ( p i − q i ) 2
Returns the Clark distance between vectors p and q
d ( p , q ) = ∑ i = 1 n ( ∣ p i − q i ∣ ( p i + q i ) ) 2 d(p,q)=\sqrt{\sum\limits_{i=1}^{n}{\left(\frac{\left|p_i-q_i\right|}{(p_i+q_i)}\right)^2}} d ( p , q ) = i = 1 ∑ n ( ( p i + q i ) ∣ p i − q i ∣ ) 2
Returns the Additive Symmetric distance between vectors p and q
d ( p , q ) = ∑ i = 1 n ( p i − q i ) 2 ⋅ ( p i + q i ) p i ⋅ q i d(p,q)=\sum\limits_{i=1}^{n}{\frac{(p_i-q_i)^2\cdot(p_i+q_i)}{p_i\cdot{q_i}}} d ( p , q ) = i = 1 ∑ n p i ⋅ q i ( p i − q i ) 2 ⋅ ( p i + q i )
Returns the Kullback-Leibler distance between vectors p and q
d ( p , q ) = ∑ i = 1 n p i ⋅ ln p i q i d(p,q)=\sum\limits_{i=1}^{n}{p_i\cdot\ln\frac{p_i}{q_i}} d ( p , q ) = i = 1 ∑ n p i ⋅ ln q i p i
Returns the Jeffreys distance between vectors p and q
d ( p , q ) = ∑ i = 1 n ( ( p i − q i ) ln p i q i ) d(p,q)=\sum\limits_{i=1}^{n}{\left((p_i-q_i)\ln\frac{p_i}{q_i}\right)} d ( p , q ) = i = 1 ∑ n ( ( p i − q i ) ln q i p i )
Returns the K divergence distance between vectors p and q
d ( p , q ) = ∑ i = 1 n ( p i ⋅ ln 2 p i p i + q i ) d(p,q)=\sum\limits_{i=1}^{n}{\left(p_i\cdot\ln\frac{2p_i}{p_i+q_i}\right)} d ( p , q ) = i = 1 ∑ n ( p i ⋅ ln p i + q i 2 p i )
Returns the Topsøe distance between vectors p and q
d ( p , q ) = ∑ i = 1 n ( p i ⋅ ln 2 p i p i + q i + q i ⋅ ln 2 q i p i + q i ) d(p,q)=\sum\limits_{i=1}^{n}{\left(p_i\cdot\ln\frac{2p_i}{p_i+q_i}+q_i\cdot\ln\frac{2q_i}{p_i+q_i}\right)} d ( p , q ) = i = 1 ∑ n ( p i ⋅ ln p i + q i 2 p i + q i ⋅ ln p i + q i 2 q i )
Returns the Jensen-Shannon distance between vectors p and q
d ( p , q ) = 1 2 [ ∑ i = 1 n p i ⋅ ln 2 p i p i + q i + ∑ i = 1 n q i ⋅ ln 2 q i p i + q i ] d(p,q)=\frac{1}{2}\left[\sum\limits_{i=1}^{n}{p_i\cdot\ln\frac{2p_i}{p_i+q_i}}+\sum\limits_{i=1}^{n}{q_i\cdot\ln\frac{2q_i}{p_i+q_i}}\right] d ( p , q ) = 2 1 [ i = 1 ∑ n p i ⋅ ln p i + q i 2 p i + i = 1 ∑ n q i ⋅ ln p i + q i 2 q i ]
Returns the Jensen difference distance between vectors p and q
d ( p , q ) = ∑ i = 1 n [ p i ln p i + q i ln q i 2 − ( p i + q i 2 ) ln ( p i + q i 2 ) ] d(p,q)=\sum\limits_{i=1}^{n}{\left[\frac{p_i\ln{p_i}+q_i\ln{q_i}}{2}-\left(\frac{p_i+q_i}{2}\right)\ln\left(\frac{p_i+q_i}{2}\right)\right]} d ( p , q ) = i = 1 ∑ n [ 2 p i l n p i + q i l n q i − ( 2 p i + q i ) ln ( 2 p i + q i ) ]
Returns the Taneja distance between vectors p and q
d ( p , q ) = ∑ i = 1 n [ p i + q i 2 ln ( p i + q i 2 p i ⋅ q i ) ] d(p,q)=\sum\limits_{i=1}^{n}{\left[\frac{p_i+q_i}{2}\ln\left(\frac{p_i+q_i}{2\sqrt{p_i\cdot{q_i}}}\right)\right]} d ( p , q ) = i = 1 ∑ n [ 2 p i + q i ln ( 2 p i ⋅ q i p i + q i ) ]
Returns the Kumar-Johnson distance between vectors p and q
d ( p , q ) = ∑ i = 1 n ( p i 2 − q i 2 ) 2 2 ( p i ⋅ q i ) 3 / 2 d(p,q)=\sum\limits_{i=1}^{n}{\frac{\left(p_i^2-q_i^2\right)^2}{2(p_i\cdot{q_i})^{3/2}}} d ( p , q ) = i = 1 ∑ n 2 ( p i ⋅ q i ) 3/2 ( p i 2 − q i 2 ) 2
Returns the average of city block and Chebyshev distances between vectors p and q
d ( p , q ) = ∑ i = 1 n ∣ p i − q i ∣ + max i ( ∣ p i − q i ∣ ) 2 d(p,q)=\frac{\sum\limits_{i=1}^{n}{\left|p_i-q_i\right|}+\max\limits_i(|p_i-q_i|)}{2} d ( p , q ) = 2 i = 1 ∑ n ∣ p i − q i ∣ + i m a x ( ∣ p i − q i ∣ )
Returns the Intersection similarity between vectors p and q
Returns the Czekanowski similarity between vectors p and q
Returns the Motyka similarity between vectors p and q
Returns the Kulczynski similarity between vectors p and q
Returns the Squared-chord similarity between vectors p and q
Returns the Jaccard similarity between vectors p and 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
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.
MIT