overlap_weighted_projected_graph#

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

重叠加权投影:将B投影到其节点集之一上。

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

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

或者如果参数’jaccard’为False,则表示原始二分图中两个节点的最小度数的共同邻居的比例[R9c7794788cc1-1]_:

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

节点保留其属性,并且在结果图中连接,前提是它们在原始二分图中有一个共同的边。

Parameters:
BNetworkX图

输入图应该是二分图。

nodes列表或可迭代对象

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

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

投影到给定节点的图。

Notes

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

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

References

[1]

Borgatti, S.P. 和 Halgin, D. 在版。分析隶属关系网络。在Carrington, P. 和 Scott, J. (eds) 社会网络分析的Sage手册中。Sage出版社。

Examples

>>> 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})]