当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python NetworkX stochastic_block_model用法及代码示例


本文简要介绍 networkx.generators.community.stochastic_block_model 的用法。

用法:

stochastic_block_model(sizes, p, nodelist=None, seed=None, directed=False, selfloops=False, sparse=True)

返回一个随机块模型图。

该模型将节点划分为任意大小的块,并独立地在节点对之间放置边,其概率取决于块。

参数

sizes整数列表

块的大小

p浮点数列表列表

元素 (r,s) 给出从组 r 的节点到组 s 的节点的边的密度。 p 必须匹配组的数量 (len(sizes) == len(p)),如果图是无向的,它必须是对称的。

nodelist列表,可选

区块标签是根据 nodelist 中的节点标识符分配的。如果 nodelist 为 None,则排序为范围 [0,sum(sizes)-1]。

seed整数、random_state 或无(默认)

随机数生成状态的指示符。请参阅随机性。

directed布尔可选,默认=假

是否创建有向图。

selfloops布尔可选,默认=假

是否包含自循环。

sparse: boolean optional, default=True

使用稀疏启发式加速生成器。

返回

gNetworkX 图表或DiGraph

大小总和(大小)的随机块模型图

抛出

NetworkXError

如果概率不在 [0,1] 中。如果概率矩阵不是方阵(有向情况)。如果概率矩阵不是对称的(无向情况)。如果大小列表与节点列表或概率矩阵不匹配。如果节点列表包含重复项。

参考

1

Holland, P. W., Laskey, K. B., & Leinhardt, S., “Stochastic blockmodels: First steps”, Social networks, 5(2), 109-137, 1983.

例子

>>> sizes = [75, 75, 300]
>>> probs = [[0.25, 0.05, 0.02], [0.05, 0.35, 0.07], [0.02, 0.07, 0.40]]
>>> g = nx.stochastic_block_model(sizes, probs, seed=0)
>>> len(g)
450
>>> H = nx.quotient_graph(g, g.graph["partition"], relabel=True)
>>> for v in H.nodes(data=True):
...     print(round(v[1]["density"], 3))
...
0.245
0.348
0.405
>>> for v in H.edges(data=True):
...     print(round(1.0 * v[2]["weight"] / (sizes[v[0]] * sizes[v[1]]), 3))
...
0.051
0.022
0.07

相关用法


注:本文由纯净天空筛选整理自networkx.org大神的英文原创作品 networkx.generators.community.stochastic_block_model。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。