scipy.spatial.distance.

jaccard#

scipy.spatial.distance.jaccard(u, v, w=None)[source]#

计算两个布尔型一维数组之间的 Jaccard-Needham 差异。

一维布尔型数组 uv 之间的 Jaccard-Needham 差异定义为

\[\frac{c_{TF} + c_{FT}} {c_{TT} + c_{FT} + c_{TF}}\]

其中 \(c_{ij}\)\(\mathtt{u[k]} = i\)\(\mathtt{v[k]} = j\) 出现的次数,其中 \(k < n\)

参数:
u(N,) array_like, bool

输入数组。

v(N,) array_like, bool

输入数组。

w(N,) array_like, 可选

uv 中每个值的权重。默认值为 None,它为每个值赋予 1.0 的权重。

返回值:
jaccarddouble

向量 uv 之间的 Jaccard 距离。

注释

uv 导致 0/0 除法,即向量中的项目之间没有重叠时,返回的距离为 0。请参阅 Jaccard 指数的维基百科页面 [1],以及这篇论文 [2]

版本 1.2.0 中的更改: 以前,当 uv 导致 0/0 除法时,函数将返回 NaN。这已更改为改为返回 0。

参考文献

[2]

S. Kosub,“关于 Jaccard 距离三角不等式的说明”,2016 年,arXiv:1612.02696

示例

>>> from scipy.spatial import distance
>>> distance.jaccard([1, 0, 0], [0, 1, 0])
1.0
>>> distance.jaccard([1, 0, 0], [1, 1, 0])
0.5
>>> distance.jaccard([1, 0, 0], [1, 2, 0])
0.5
>>> distance.jaccard([1, 0, 0], [1, 1, 1])
0.66666666666666663