Caractériser les communautés de modification
Vous allez maintenant combiner ce que vous avez appris sur l'algorithme BFS et la notion de cliques maximales pour visualiser le réseau avec un diagramme Arc plot.
La plus grande clique maximale du réseau de collaboration des utilisateurs Github a été assignée au sous-graphe G_lmc. Notez que pour NetworkX version 2.x et ultérieures, G.subgraph(nodelist) retourne seulement une vue immuable du graphe original. Il faut explicitement demander une .copy() du graphe pour obtenir une version modifiable.
Cette activité fait partie du cours
Introduction à l'analyse des réseaux en Python
Instructions de l’exercice
- Élargissez 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 àG_lmcdes arêtes entre le nœud courant et tous ses voisins. Pour ce faire, vous devrez créer 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 deuxième argument doit être les voisins denode.
- Ajoutez des nœuds à
- Enregistrez, dans les métadonnées de chaque nœud, son score de centralité de degré.
- 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 diagramme Arc plot en triant les nœuds selon la centralité de degré (vous pouvez le faire avec le paramètre nommé
sort_by='degree centrality').
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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()