stochastic_block_model#
- stochastic_block_model(sizes, p, nodelist=None, seed=None, directed=False, selfloops=False, sparse=True)[源代码]#
返回随机块模型图。
该模型将节点划分成任意大小的块,并将边独立地放置在节点对之间,概率取决于块。
- 参数
- sizesINT列表
块的大小
- p浮动资金清单
元素(r,s)给出了从组r的节点到组s的节点的边的密度。p必须与组的数目(len(尺寸)==len(P))匹配,并且如果图是无向的,则它一定是对称的。
- nodelist列表,可选
块标签根据节点列表中的节点标识符来分配。如果nodelist为NONE,则排序为范围 [0,sum(sizes)-1] 。
- seed整数、随机状态或无(默认)
随机数生成状态的指示器。见 Randomness .
- directed布尔值可选,默认值=FALSE
是否创建有向图。
- selfloops布尔值可选,默认值=FALSE
是否包含自循环。
- sparse: boolean optional, default=True
使用稀疏启发式加速生成器。
- 返回
- g网络X图或有向图
尺寸和(尺寸)的随机区组模型图
- 加薪
- NetworkXError
如果概率不在 [0,1] 。如果概率矩阵不是平方(有向情况)。如果概率矩阵不对称(无向情况)。如果大小列表与节点列表或概率矩阵不匹配。如果节点列表包含重复项。
参见
random_partition_graph
planted_partition_graph
gaussian_random_partition_graph
gnp_random_graph
工具书类
- 1
Holland,P.W.、Laskey,K.B.和Leinhardt,S.,“随机块模型:第一步”,社会网络,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