Beräkna den genomsnittliga graden av centralitet dag för dag i studentpartitionen
Här ska du undersöka om den genomsnittliga graden av centralitet över alla noder korrelerar med antalet kanter som ritas ut över tid. Det finns inte nödvändigtvis ett starkt samband, och du får möjlighet att kontrollera om så är fallet.
Den här övningen är en del av kursen
Nätverksanalys i Python – fortsättningskurs
Övningsinstruktioner
- Skapa en ny graf kallad
G_subsom innehåller en delmängd av kanter. - Lägg till noder från
G, inklusive nodernas metadata. - Lägg till kanter som uppfyller villkoren med metoden
.add_edges_from(). - Hämta studentprojektionen
G_student_subfrånG_submed funktionennx.bipartite.projected_graph(). - Beräkna graden av centralitet för studentprojektionen med
nx.degree_centrality()(använd inte bipartitversionen). - Lägg till den genomsnittliga graden av centralitet i listan
mean_dcs. Se till att konverteradc.values()till en lista först. - Klicka på 'Skicka in svar' för att visa diagrammet!
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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()