Wyznaczanie średniej centralności stopnia dzień po dniu dla partycji studentów
Sprawdzisz teraz, czy średnia centralność stopnia wszystkich węzłów jest skorelowana z liczbą krawędzi widocznych na wykresie w czasie. Korelacja niekoniecznie musi być silna – przekonasz się, czy tak rzeczywiście jest.
To ćwiczenie jest częścią kursu
Analiza sieci w Pythonie – poziom średniozaawansowany
Instrukcje do ćwiczenia
- Utwórz nowy graf
G_subzawierający podzbiór krawędzi. - Dodaj węzły z
G, wraz z metadanymi węzłów. - Dodaj krawędzie spełniające zadane kryteria, używając metody
.add_edges_from(). - Wyznacz projekcję studentów
G_student_subzG_subza pomocą funkcjinx.bipartite.projected_graph(). - Oblicz centralność stopnia projekcji studentów przy użyciu
nx.degree_centrality()(nie używaj wersji bipartite). - Dołącz średnią centralność stopnia do listy
mean_dcs. Pamiętaj, aby najpierw przekonwertowaćdc.values()na listę. - Kliknij „Prześlij odpowiedź", aby zobaczyć wykres!
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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()