scipy.spatial.distance.

jaccard#

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

计算两个布尔一维数组之间的Jaccard-Needham不相似度。

1-D 布尔数组 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,) 数组类, 布尔值

输入数组。

v(N,) 数组类, 布尔值

输入数组。

w(N,) 数组类,可选

uv 中每个值的权重。默认是 None,即每个值的权重为 1.0。

返回:
jaccard

向量 uv 之间的 Jaccard 距离。

注释

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

在 1.2.0 版本发生变更: 之前,当 uv 导致 0/0 除法时,函数会返回 NaN。这一行为已被修改为返回 0。

参考文献

[2]

S. Kosub, “A note on the triangle inequality for the Jaccard distance”, 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