在igraph中使用社区检测算法

时间:2015-11-17 11:41:51

标签: python igraph

我正在研究DBLP数据集(包含超过180万份出版物的元数据,由数千种期刊或会议论文系列中的100多万作者撰写),其中包含以下专栏:

[' id',' title',' authors',' year',' pub_venue',& #39; ref_id',' ref_num',' abstract']

我必须在给定的数据集上应用社区检测算法。我的要求是 获得重叠的社区。 为此,我使用上面的数据在igraph中创建了一个图形,其中id是顶点值,ref_id中的id将用于创建边缘。我尝试了igraph中可用的不同社区检测算法但没有获得所需的结果 -

我正在使用 -

community_multilevel()

我从这个算法得到的结果集群只给出了具有最佳模块性的分区。我想了解如何在不同级别或树形图上获得聚类?

编辑:我使用了community_multilevel(return_levels = True),对于上面的数据集,这是一个稀疏图,我的期望是让更高层次的密集社区,但我在每个级别获得的社区数量几乎相同大大减少了。我需要类似于networkx中的parition_at_level。

Total no of vertices  : 1632441
cl =  g.community_multilevel(return_levels=True)
print len(cl[0]) , len(cl[1]) , len(cl[2]) , len(cl[3])

output is : 1207787 1164960 1162115 1161959

1 个答案:

答案 0 :(得分:1)

请阅读community_multilevel的文档 - 它有return_levels个参数;将其设置为True将返回一个不相交的社区结构列表,一个用于算法确定的每个相关分辨率级别。

请注意,这不是真正的“重叠”社区结构,因为算法识别的每个级别都会有不相交的社区。