2014-02-26 65 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]