非常简短,关于minimize_nested_blockmodel_dl
中graph-tool library
功能的两三个基本问题。有没有办法找出哪个顶点落在哪个块上?换句话说,从每个块中提取列表,包含其顶点的标签。
对于网络理论中的业余爱好者来说,分层可视化很难理解,例如绘制的有向边的正方形是否意味着暗示在考虑的两个块之间的下层边缘的主方向?块使用不同的颜色很好地显示,但在概念层面上,哪些类型的图案或边/顶点属性位于顶点的块分类后面?换句话说,当两个顶点在同一个块中时,我能说一下它们的共同属性吗?
答案 0 :(得分:7)
关于你的第一个问题,它非常简单:minimize_nested_blockmodel_dl()
函数返回一个NestedBlockState
对象:
g = collection.data["football"]
state = minimize_nested_blockmodel_dl(g)
您可以通过检查层次结构的第一级来查询节点的组成员身份:
lstate = state.levels[0]
这是一个BlockState
对象,我们通过get_blocks()
方法从中获取组成员资格:
b = lstate.get_blocks()
print(b[30]) # prints the group membership of node 30
关于第二个问题,随机块模型假设属于同一组的节点具有连接到网络其余部分的相同概率。因此,通过上述函数分类在同一组中的节点具有相似的连接模式。例如,如果我们看看适合足球网络:
state.draw(output="football.png")
我们看到属于同一组的节点往往与同一组的其他节点有更多的连接 - 这是社区结构的典型示例。然而,这只是随机块模型可以发现的众多可能性之一。其他拓扑模式包括核心 - 边缘组织,二分性等。