Bearbeitungsgemeinschaften charakterisieren
Jetzt kombinierst du, was du über den BFS-Algorithmus und das Konzept maximaler Cliquen gelernt hast, um das Netzwerk mit einem Arc-Plot zu visualisieren.
Die größte maximale Clique im Github-Kollaborationsnetzwerk der Nutzer wurde dem Subgraphen G_lmc zugewiesen. Beachte, dass für NetworkX Version 2.x und höher G.subgraph(nodelist) nur eine unveränderliche Sicht auf den ursprünglichen Graphen zurückgibt. Wir müssen explizit eine .copy() des Graphen anfordern, um eine veränderliche Version zu erhalten.
Diese Übung ist Teil des Kurses
Einstieg in die Netzwerkanalyse mit Python
Anleitung zur Übung
- Gehe eine Verbindungsstufe von der Clique aus und füge diese Nutzer dem Subgraphen hinzu. In der ersten
for-Schleife:- Füge Knoten zu
G_lmcaus den Nachbarn vonGmithilfe der Methoden.add_nodes_from()und.neighbors()hinzu. - Füge mit der Methode
.add_edges_from()Kanten zuG_lmczwischen dem aktuellen Knoten und all seinen Nachbarn hinzu. Erzeuge dazu eine Liste von Tupeln mit der Funktionzip(), bestehend aus dem aktuellen Knoten und jedem seiner Nachbarn. Das erste Argument fürzip()sollte[node]*len(list(G.neighbors(node)))sein, und das zweite Argument die Nachbarn vonnode.
- Füge Knoten zu
- Protokolliere die Degree-Centrality jedes Knotens in seinen Knotenmetadaten.
- Weise dazu in der zweiten
for-Schleifenx.degree_centrality(G_lmc)[n]dem EintragG_lmc.nodes[n]['degree centrality']zu.
- Weise dazu in der zweiten
- Visualisiere dieses Netzwerk mit einem Arc-Plot und sortiere die Knoten nach der Degree Centrality (du kannst das mit dem Schlüsselwortargument
sort_by='degree centrality'tun).
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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()