Estrai la degree centrality media giorno per giorno sulla partizione degli studenti
Qui verificherai se la degree centrality media su tutti i nodi è correlata con il numero di archi tracciati nel tempo. Potrebbe non esserci necessariamente una forte correlazione, e darai un’occhiata per vedere se è così.
Questo esercizio fa parte del corso
Analisi di reti intermedia in Python
Istruzioni dell'esercizio
- Istanzia un nuovo grafo chiamato
G_subcontenente un sottoinsieme di archi. - Aggiungi i nodi da
G, includendo i metadati dei nodi. - Aggiungi gli archi che soddisfano i criteri usando il metodo
.add_edges_from(). - Ottieni la proiezione degli studenti
G_student_subdaG_subusando la funzionenx.bipartite.projected_graph(). - Calcola la degree centrality della proiezione degli studenti usando
nx.degree_centrality()(non usare la versione bipartita). - Aggiungi la degree centrality media alla lista
mean_dcs. Assicurati di convertire primadc.values()in una lista. - Premi "Invia risposta" per visualizzare il grafico!
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
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()