我必须检测网络中的社区。但我需要告知社区数量(k)。
我试过这个
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'。
答案 0 :(得分:2)
此方法返回完整的树形图,因此您可以拥有任意数量的社区。默认情况下,as_clustering()
会根据模块化度量返回最佳社区数,但您可以提供所需数量的社区。 p>
请参阅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]