Aan de slagBegin gratis

Haal de gemiddelde degree centrality per dag op voor de studentenpartitie

Hier ga je kijken of de gemiddelde degree centrality over alle knopen correleert met het aantal randen dat in de tijd wordt uitgezet. Er is niet per se een sterke correlatie, en je gaat controleren of dat zo is.

Deze oefening maakt deel uit van de cursus

Gemiddelde netwerkanalyse in Python

Bekijk cursus

Oefeninstructies

  • Instantier een nieuwe graaf G_sub met een subset van randen.
  • Voeg knopen uit G toe, inclusief de metagegevens van de knopen.
  • Voeg randen toe die aan de criteria voldoen met de methode .add_edges_from().
  • Maak de studentenprojectie G_student_sub van G_sub met de functie nx.bipartite.projected_graph().
  • Bereken de degree centrality van de studentenprojectie met nx.degree_centrality() (gebruik niet de bipartite-versie).
  • Voeg de gemiddelde degree centrality toe aan de lijst mean_dcs. Zet dc.values() eerst om naar een lijst.
  • Klik op 'Antwoord verzenden' om de plot te bekijken!

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

from datetime import datetime, timedelta
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt

# Initialize a new list: mean_dcs
mean_dcs = []
curr_day = dayone
td = timedelta(days=2)

while curr_day < lastday:
    if curr_day.day == 1:
        print(curr_day)  
    # Instantiate a new graph containing a subset of edges: G_sub
    G_sub = ____
    # Add nodes from G
    G_sub.____(____)
    # Add in edges that fulfill the criteria
    G_sub.____([(u, v, d) for u, v, d in G.edges(data=True) if d['date'] >= curr_day and d['date'] < curr_day + td])
    
    # Get the students projection
    G_student_sub = ____
    # Compute the degree centrality of the students projection
    dc = ____
    # Append mean degree centrality to the list mean_dcs
    mean_dcs.____(np.mean(____(dc.values())))
    # Increment the time
    curr_day += td
    
plt.plot(mean_dcs)
plt.xlabel('Time elapsed')
plt.ylabel('Degree centrality.')
plt.show()
Code bewerken en uitvoeren