Aan de slagGa gratis aan de slag

Bewerkingsgemeenschappen karakteriseren

Je gaat nu combineren wat je hebt geleerd over het BFS-algoritme en het concept van maximale klieken om het netwerk te visualiseren met een Arc-plot.

De grootste maximale kliek in het Github-samenwerkingsnetwerk van gebruikers is toegewezen aan de subgraaf G_lmc. Let op: voor NetworkX versie 2.x en later geeft G.subgraph(nodelist) alleen een onveranderlijke weergave van de oorspronkelijke graaf terug. We moeten expliciet om een .copy() van de graaf vragen om een wijzigbare versie te krijgen.

Deze oefening maakt deel uit van de cursus

Introductie tot netwerkanalyse in Python

Cursus bekijken

Oefeninstructies

  • Ga 1 graad van scheiding vanaf de kliek, en voeg die gebruikers toe aan de subgraaf. Binnen de eerste for-lus:
    • Voeg knopen toe aan G_lmc vanuit de buren van G met de methoden .add_nodes_from() en .neighbors().
    • Gebruik de methode .add_edges_from() om randen toe te voegen aan G_lmc tussen de huidige knoop en al zijn buren. Maak hiervoor een lijst met tuples met de functie zip(), bestaande uit de huidige knoop en elk van zijn buren. Het eerste argument van zip() moet [node]*len(list(G.neighbors(node))) zijn, en het tweede argument moeten de buren van node zijn.
  • Leg de graadcentraliteitsscore van elke knoop vast in zijn knoopmetadata.
    • Doe dit door nx.degree_centrality(G_lmc)[n] toe te wijzen aan G_lmc.nodes[n]['degree centrality'] in de tweede for-lus.
  • Visualiseer dit netwerk met een Arc-plot en sorteer de knopen op graadcentraliteit (dit kan met het keywordargument sort_by='degree centrality').

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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()
Code bewerken en uitvoeren