Extraire la centralité en degré moyenne, jour après jour, sur la partition des étudiants
Ici, vous allez vérifier si la centralité en degré moyenne sur l’ensemble des nœuds est corrélée au nombre d’arêtes tracées au fil du temps. Il n’y a pas forcément de forte corrélation ; vous allez examiner si c’est le cas.
Cet exercice fait partie du cours
Analyse de réseaux intermédiaire en Python
Instructions
- Instanciez un nouveau graphe appelé
G_subcontenant un sous-ensemble d’arêtes. - Ajoutez les nœuds depuis
G, y compris les métadonnées des nœuds. - Ajoutez les arêtes qui respectent les critères, en utilisant la méthode
.add_edges_from(). - Obtenez la projection des étudiants
G_student_subà partir deG_suben utilisant la fonctionnx.bipartite.projected_graph(). - Calculez la centralité en degré de la projection des étudiants avec
nx.degree_centrality()(n’utilisez pas la version bipartite). - Ajoutez la centralité en degré moyenne à la liste
mean_dcs. Veillez d’abord à convertirdc.values()en liste. - Cliquez sur "Soumettre la réponse" pour afficher le graphique !
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
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()