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
Oefeninstructies
- Instantier een nieuwe graaf
G_submet een subset van randen. - Voeg knopen uit
Gtoe, 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_subvanG_submet de functienx.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. Zetdc.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()