weighted_projected_graph#

weighted_projected_graph(B, nodes, ratio=False)[source]#

返回图 B 在其节点集之一上的加权投影。

加权投影图是将二部网络 B 投影到指定节点集上得到的图,其边权重表示共享邻居的数量,或者当 ratio is True 时,表示实际共享邻居与可能的共享邻居之间的比率 [1]。节点保留其属性,并且如果它们在原图中与某个共同节点有边相连,则在结果图中它们之间也存在边。

参数:
BNetworkX 图

输入图应为二部图。

nodes列表或可迭代对象

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

ratio: 布尔型 (默认为 False)

如果为 True,边权重是实际共享邻居与最大可能共享邻居(即,另一节点集的大小)之间的比率。如果为 False,边权重是共享邻居的数量。

返回:
GraphNetworkX 图

一个表示投影到给定节点上的图。

说明

未尝试验证输入图 B 是否为二部图,或输入节点是否唯一。但是,如果输入节点的数量大于或等于图 B 中的节点总数,则会引发异常。如果节点不唯一但未引发此错误,则输出权重将不正确。图和节点属性会被(浅)复制到投影图中。

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

参考文献

[1]

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(4)
>>> G = bipartite.weighted_projected_graph(B, [1, 3])
>>> list(G)
[1, 3]
>>> list(G.edges(data=True))
[(1, 3, {'weight': 1})]
>>> G = bipartite.weighted_projected_graph(B, [1, 3], ratio=True)
>>> list(G.edges(data=True))
[(1, 3, {'weight': 0.5})]