Extrae la centralidad de grado media día a día en la partición de estudiantes
Aquí vas a comprobar si la centralidad de grado media en todos los nodos está correlacionada con el número de aristas que se representan a lo largo del tiempo. Puede que no haya necesariamente una correlación fuerte, y lo investigarás para ver si es así.
Este ejercicio forma parte del curso
Análisis de redes intermedio en Python
Instrucciones del ejercicio
- Instancia un nuevo grafo llamado
G_subque contenga un subconjunto de aristas. - Añade nodos desde
G, incluyendo los metadatos de los nodos. - Añade las aristas que cumplan los criterios, usando el método
.add_edges_from(). - Obtén la proyección de estudiantes
G_student_suba partir deG_subusando la funciónnx.bipartite.projected_graph(). - Calcula la centralidad de grado de la proyección de estudiantes usando
nx.degree_centrality()(no uses la versión bipartita). - Añade la centralidad de grado media a la lista
mean_dcs. Asegúrate de convertir primerodc.values()en una lista. - Pulsa "Enviar respuesta" para ver la gráfica.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
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()