CommencezCommencez gratuitement

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

Voir le cours

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 de G en utilisant les méthodes .add_nodes_from() et .neighbors().
    • En utilisant la méthode .add_edges_from(), ajoutez à G_lmc des arêtes entre le nœud courant et tous ses voisins. Pour ce faire, vous devrez créer une liste de tuples avec la fonction zip() composée du nœud courant et de chacun de ses voisins. Le premier argument de zip() doit être [node]*len(list(G.neighbors(node))), et le deuxième argument doit être les voisins de node.
  • 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 boucle for.
  • 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()
Modifier et exécuter le code