2014-02-26 38 views
0

我必须在网络中检测社区。但我需要告知社区数量(k)。Python中的社区检测

我想这

from igraph import * 
karate = Nexus.get("karate") 
cl = karate.community_fastgreedy() 
cl.as_clustering().membership 

# [0, 1, 1, 1, 0, 0, 0, 1, 2, 1, 0, 0, 1, 1, 2, 2, 0, 1, 2, 0, 
# 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2] 

但是,我想告诉社区

公式:

from igraph import * 
karate = Nexus.get("karate") 
k = 2 # --> Number of communities 
cl = karate.community_fastgreedy(k) # --> Note the k 

我如何做到这一点的数量?有没有一些算法呢?我可以使用'Networkx'或'igraph'。

回答

2

该方法返回一个完整的树状图,因此您可以拥有任意数量的社区。默认情况下,as_clustering()返回模块化度量方面的最佳社区数量,但您可以提供所需的社区数量。

看到的网页的igraph文档:http://igraph.org/python/doc/igraph.clustering.VertexDendrogram-class.html#as_clustering

from igraph import * 
karate = Nexus.get("karate") 
cl = karate.community_fastgreedy() 
k=2 
cl.as_clustering(k).membership 
# [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 
# 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]