overlap_weighted_projected_graph#

overlap_weighted_projected_graph(B, nodes, jaccard=True)[源码]#

B图在其节点集上的重叠加权投影。

重叠加权投影是将二分网络B投影到指定的节点集上,其边的权重表示原始二分网络中两个节点邻域之间的Jaccard指数[1]

\[w_{v, u} = \frac{|N(u) \cap N(v)|}{|N(u) \cup N(v)|}\]

或者如果参数“jaccard”为False,权重表示原始二分图中两个节点共同邻居数除以它们度数的最小值[1]

\[w_{v, u} = \frac{|N(u) \cap N(v)|}{min(|N(u)|, |N(v)|)}\]

节点保留其属性,并且如果在原始二分图中与某个共同节点有边连接,则在结果图中它们是连通的。

参数:
BNetworkX 图

输入图应为二分图。

nodes列表或可迭代对象

要投影到的节点(“底部”节点)。

jaccard: 布尔值 (默认=True)
返回值:
GraphNetworkX 图

投影到给定节点集上的图。

注意

未尝试验证输入图 B 是否为二分图。图和节点的属性被(浅)复制到投影图中。

有关 NetworkX 如何处理二分图的更多详细信息,请参阅二分图文档

参考文献

[1] (1,2)

Borgatti, S.P. and Halgin, D. In press. Analyzing Affiliation Networks. In Carrington, P. and Scott, J. (eds) The Sage Handbook of Social Network Analysis. Sage Publications.

示例

>>> from networkx.algorithms import bipartite
>>> B = nx.path_graph(5)
>>> nodes = [0, 2, 4]
>>> G = bipartite.overlap_weighted_projected_graph(B, nodes)
>>> list(G)
[0, 2, 4]
>>> list(G.edges(data=True))
[(0, 2, {'weight': 0.5}), (2, 4, {'weight': 0.5})]
>>> G = bipartite.overlap_weighted_projected_graph(B, nodes, jaccard=False)
>>> list(G.edges(data=True))
[(0, 2, {'weight': 1.0}), (2, 4, {'weight': 1.0})]