Détection de communautés dans Networkx
Je suis étudiant à propos de la détection de communautés dans les réseaux.
Je suis l'utiliser igraph et Python
Pour le nombre optimal de communautés en termes de modularité mesure:
from igraph import *
karate = Nexus.get("karate")
cl = karate.community_fastgreedy()
cl.as_clustering().membership
Pour fournir le nombre désiré de communautés:
from igraph import *
karate = Nexus.get("karate")
cl = karate.community_fastgreedy()
k=2
cl.as_clustering(k).membership
Cependant, je tiens à le faire à l'aide de networkx. Je sais que d'optimaliser le nombre de communautés en termes de modularité mesure:
import community # --> http://perso.crans.org/aynaud/communities/
import fastcommunity as fg # --> https://networkx.lanl.gov/trac/ticket/245
import networkx as nx
g = nx.karate_club_graph()
partition = community.best_partition(g)
print "Louvain Modularity: ", community.modularity(partition, g)
print "Louvain Partition: ", partition
cl = fg.communityStructureNewman(g)
print "Fastgreed Modularity: ", cl[0]
print "Fastgreed Partition: ", cl[1]
Mais je ne peux pas obtenir le nombre désiré de communautés. Existe-il un algorithme pour cela, à l'aide de Networkx?
C'est un très récents travaux, mais il est extrêmement utile: journals.aps.org/prl/abstract/10.1103/PhysRevLett.117.078301
OriginalL'auteur Alan Valejo | 2014-02-27
Vous devez vous connecter pour publier un commentaire.
Je suis aussi nouvelle pour networkx et igraph, j'ai utilisé Gephi, un outil de visualisation de données/logiciel. Et il a le même algorithme de détection de communautés comme celle networkx vous êtes maintenant en utilisant. Plus précisément, dans http://perso.crans.org/aynaud/communities/
Vous ne pouvez pas obtenir le nombre désiré de communautés, que je sache, il y a deux façons peine d'essayer:
resolution
qui allait changer la taille de la communauté que vous obtenez.best_partition(G)
plus. Mais l'utilisationpartition_at_level(dendrogram, level)
, je suppose que cela pourrait aider.Vérifier la le code source ici pour plus d'info.
community
, qui s'appuie sur NetworkX. Plus précisément,best_partition()
estcommunity.best_partition()
.OriginalL'auteur zihaolucky
Peut-être que je suis malentendu vous, mais si vous souhaitez le nombre de communautés de sortie par le NetworkX mise en œuvre de la best_partition algorithme, il suffit de noter que best_partition(G) donne un dictionnaire avec des nœuds comme les touches et leur numéro de partition de la valeur.
Vous pouvez compter le nombre de valeurs uniques dans un dictionnaire comme cela (probablement pas optimale):
Avec un résultat
OriginalL'auteur Johannes Wachs