cn_soundarajan_hopcroft#

计算ebunch中所有节点对的共同邻居数量,使用社区信息。

对于两个节点:math:u`和:math:`v,该函数计算共同邻居的数量,并为每个属于:math:`u`和:math:`v`同一社区的共同邻居加一分。数学上,

\[|\Gamma(u) \cap \Gamma(v)| + \sum_{w \in \Gamma(u) \cap \Gamma(v)} f(w)\]

其中:math:f(w)`等于1如果:math:`w`属于:math:`u`和:math:`v`的同一社区,否则为0,:math:Gamma(u)`表示:math:`u`的邻居集合。

Parameters:
G

一个NetworkX无向图。

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

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

community字符串,可选(默认 = ‘community’)

包含社区信息的节点属性名称。G[u][community]标识u所属的社区。每个节点最多属于一个社区。默认值:’community’。

Returns:
piter迭代器

一个迭代器,返回形式为(u, v, p)的3元组,其中(u, v)是一对节点,p是它们的得分。

Raises:
NetworkXNotImplemented

如果 GDiGraphMultigraphMultiDiGraph

NetworkXAlgorithmError

如果 ebunchG (如果 ebunchNone )中的节点没有社区信息。

NodeNotFound

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

References

[1]

Sucheta Soundarajan and John Hopcroft. 使用社区信息提高链接预测方法的精确度。 在第21届国际万维网会议(WWW ‘12 Companion)上发表。ACM, 纽约, NY, USA, 607-608. http://doi.acm.org/10.1145/2187980.2188150

Examples

>>> G = nx.path_graph(3)
>>> G.nodes[0]["community"] = 0
>>> G.nodes[1]["community"] = 0
>>> G.nodes[2]["community"] = 0
>>> preds = nx.cn_soundarajan_hopcroft(G, [(0, 2)])
>>> for u, v, p in preds:
...     print(f"({u}, {v}) -> {p}")
(0, 2) -> 2