Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Utwórz nowy graf G_sub zawierają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_sub z G_sub za pomocą funkcji nx.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()
Edytuj i uruchom kod