jaccard_coefficient#

计算ebunch中所有节点对的Jaccard系数。

节点 uv 的Jaccard系数定义为

\[\frac{|\Gamma(u) \cap \Gamma(v)|}{|\Gamma(u) \cup \Gamma(v)|}\]

其中:math:`Gamma(u)`表示节点:math:`u`的邻居集合。

Parameters:
Ggraph

一个NetworkX无向图。

ebunch可迭代节点对,可选(默认 = None)

Jaccard系数将针对可迭代对象中给出的每一对节点进行计算。 节点对必须以2元组(u, v)的形式给出,其中u和v是图中的节点。 如果ebunch为None,则将使用图中所有不存在的边。 默认值:None。

Returns:
piteriterator

一个包含3元组(u, v, p)的迭代器,其中(u, v)是一对节点,p是它们的Jaccard系数。

Raises:
NetworkXNotImplemented

如果 GDiGraphMultigraphMultiDiGraph

NodeNotFound

如果 ebunch 中有一个节点不在 G 中。

References

[1]

D. Liben-Nowell, J. Kleinberg. The Link Prediction Problem for Social Networks (2004). http://www.cs.cornell.edu/home/kleinber/link-pred.pdf

Examples

>>> G = nx.complete_graph(5)
>>> preds = nx.jaccard_coefficient(G, [(0, 1), (2, 3)])
>>> for u, v, p in preds:
...     print(f"({u}, {v}) -> {p:.8f}")
(0, 1) -> 0.60000000
(2, 3) -> 0.60000000