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] 。如果概率矩阵不是平方(有向情况)。如果概率矩阵不对称(无向情况)。如果大小列表与节点列表或概率矩阵不匹配。如果节点列表包含重复项。

工具书类

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