在Python中使用iGraph的社区检测函数community_fastgreedy(),我得到了一个vertexdrogram对象,我们称之为V。然后使用V.as_clustering()从树状图中得到了一个VertexClustering对象。我知道社区是集群的,这样模块化就最大化了,但我认为dendogram对象一直在合并,所以很难在树状图上看到社区。在
我的问题是:V.as_clustering()的输出如何对应树状图中社区之间的距离?在
换句话说,每个社区都有一个有代表性的数字(例如社区[0],社区[2]),那么这个数字如何对应于树状图上的位置?当树状图合并到最大化模块化的级别时,社区0和社区1是否相邻?社区12与社区0的距离是否大于社区3?在
如果不是,那么as_集群函数如何决定输出的顺序(每个社区的编号)?在
提前谢谢。在
当igraph中的一个算法产生一个
VertexDendrogram
时,它也可以选择性地产生一个“提示”,告诉我们在哪里剪切树状图(即,在多少次合并之后),以获得某种意义上最优的VertexClustering
。例如,由community_fastgreedy()
产生的VertexDendrogram
建议树状图应在模块性最大化的点处切割。在VertexDendrogram
上运行as_clustering()
只需使用聚类算法产生的提示将树状图展平成一个聚类,但是您可以通过指定所需的集群数量作为as_clustering()
的参数来覆盖这一点。在至于两个社区之间的“距离”:这是一件复杂的事情,因为大多数社区检测方法都不能提供这些信息。它们只是产生一系列的合并,从单个顶点到一个包含所有人的大社区,树状图中没有编码的“距离”信息;换句话说,树状图的分支没有“长度”。这可能是你能做的最好的一个边缘检查图。例如:
如果图形是定向的,请在最后一行使用1.0而不是2.0的乘数。在
相关问题 更多 >
编程相关推荐