cn_soundarajan_hopcroft#
- cn_soundarajan_hopcroft(G, ebunch=None, community='community')[source]#
- 计算 ebunch 中所有节点对的共同邻居数量
使用社区信息。
对于两个节点 \(u\) 和 \(v\),此函数计算共同邻居的数量,并为属于与 \(u\) 和 \(v\) 相同社区的每个共同邻居额外加一。数学上表示为:
\[|\Gamma(u) \cap \Gamma(v)| + \sum_{w \in \Gamma(u) \cap \Gamma(v)} f(w)\]其中如果 \(w\) 与 \(u\) 和 \(v\) 属于同一社区,则 \(f(w)\) 等于 1,否则等于 0;\(\Gamma(u)\) 表示 \(u\) 的邻居集合。
- 参数:
- G图
一个 NetworkX 无向图。
- ebunch节点对的可迭代对象,可选 (默认为 None)
将为可迭代对象中给定的每对节点计算得分。节点对必须以 2 元组 (u, v) 的形式给出,其中 u 和 v 是图中的节点。如果 ebunch 为 None,则将使用图中的所有不存在的边。默认值:None。
- community字符串,可选 (默认为 'community')
包含社区信息的节点属性名称。G[u][community] 表示节点 u 所属的社区。每个节点最多属于一个社区。默认值:'community'。
- 返回值:
- piter迭代器
一个包含 3 元组 (u, v, p) 的迭代器,其中 (u, v) 是一对节点,p 是它们的得分。
- 抛出异常:
- NetworkXNotImplemented
如果
G
是DiGraph
、Multigraph
或MultiDiGraph
。- NetworkXAlgorithmError
如果在
ebunch
或G
(如果ebunch
为None
) 中某个节点没有社区信息。- NodeNotFound
如果
ebunch
中有节点不在G
中。
参考文献
[1]Sucheta Soundarajan 和 John Hopcroft。利用社区信息改进链接预测方法的准确性。发表于:Proceedings of the 21st international conference companion on World Wide Web (WWW ‘12 Companion)。ACM,纽约,纽约州,美国,607-608 页。http://doi.acm.org/10.1145/2187980.2188150
示例
>>> 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