Caractériser les communautés d’édition
Vous allez maintenant combiner ce que vous avez appris sur l’algorithme BFS et le concept de cliques maximales pour visualiser le réseau avec un Arc plot.
La plus grande clique maximale du réseau de collaboration des utilisateurs GitHub a été affectée au sous-graphe G_lmc. Notez que pour NetworkX version 2.x et ultérieures, G.subgraph(nodelist) ne renvoie qu’une vue immuable du graphe original. Il faut explicitement demander une .copy() du graphe pour obtenir une version modifiable.
Cet exercice fait partie du cours
Introduction à l’analyse de réseaux en Python
Instructions
- Éloignez-vous d’un degré de séparation à partir de la clique et ajoutez ces utilisateurs au sous-graphe. Dans la première boucle
for:- Ajoutez des nœuds à
G_lmcà partir des voisins deGen utilisant les méthodes.add_nodes_from()et.neighbors(). - En utilisant la méthode
.add_edges_from(), ajoutez des arêtes àG_lmcentre le nœud courant et tous ses voisins. Pour ce faire, créez une liste de tuples avec la fonctionzip()composée du nœud courant et de chacun de ses voisins. Le premier argument dezip()doit être[node]*len(list(G.neighbors(node))), et le second argument doit être les voisins denode.
- Ajoutez des nœuds à
- Enregistrez le score de centralité de degré de chaque nœud dans ses métadonnées.
- Faites-le en affectant
nx.degree_centrality(G_lmc)[n]àG_lmc.nodes[n]['degree centrality']dans la deuxième bouclefor.
- Faites-le en affectant
- Visualisez ce réseau avec un Arc plot en triant les nœuds par centralité de degré (vous pouvez le faire avec l’argument nommé
sort_by='degree centrality').
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# Import necessary modules
from nxviz import arc
import matplotlib.pyplot as plt
# Identify the largest maximal clique: largest_max_clique
largest_max_clique = set(sorted(nx.find_cliques(G), key=lambda x: len(x))[-1])
# Create a subgraph from the largest_max_clique: G_lmc
G_lmc = G.subgraph(largest_max_clique).copy()
# Go out 1 degree of separation
for node in list(G_lmc.nodes()):
G_lmc.add_nodes_from(____)
G_lmc.add_edges_from(zip(____, ____))
# Record each node's degree centrality score
for n in G_lmc.nodes():
____ = ____
# Create the Arc plot: a
a = ____
# Draw the Arc plot to the screen
a
plt.show()