stochastic_block_model#
- stochastic_block_model(sizes, p, nodelist=None, seed=None, directed=False, selfloops=False, sparse=True)[source]#
返回一个随机块模型图。
该模型将节点划分为任意大小的块,并在节点对之间独立地放置边,边的概率取决于块。
- Parameters:
- sizes整数列表
块的大小
- p浮点数的二维列表
元素 (r,s) 表示从组 r 的节点到组 s 的节点的边的密度。 p 必须与组的数量匹配(len(sizes) == len(p)), 如果图是无向的,则必须对称。
- nodelist列表, 可选
块标签根据 nodelist 中的节点标识符分配。如果 nodelist 为 None,则顺序为范围 [0, sum(sizes)-1]。
- seed整数, random_state, 或 None (默认)
随机数生成状态的指示器。 参见 Randomness 。
- directed布尔值, 可选, 默认=False
是否创建有向图。
- selfloops布尔值, 可选, 默认=False
是否包含自环。
- sparse: 布尔值, 可选, 默认=True
使用稀疏启发式方法加速生成器。
- Returns:
- gNetworkX Graph 或 DiGraph
大小为 sum(sizes) 的随机块模型图
- Raises:
- NetworkXError
如果概率不在 [0,1] 范围内。 如果概率矩阵不是方阵(有向情况)。 如果概率矩阵不对称(无向情况)。 如果大小列表与 nodelist 或概率矩阵不匹配。 如果 nodelist 包含重复项。
See also
random_partition_graph
planted_partition_graph
gaussian_random_partition_graph
gnp_random_graph
References
[1]Holland, P. W., Laskey, K. B., & Leinhardt, S., “Stochastic blockmodels: First steps”, Social networks, 5(2), 109-137, 1983.
Examples
>>> 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