Extrahiere die durchschnittliche Degree Centrality tagesscharf auf der Studierenden-Partition
Hier prüfst du, ob die durchschnittliche Degree Centrality über alle Knoten mit der Anzahl der über die Zeit gezeichneten Kanten korreliert. Es muss nicht unbedingt eine starke Korrelation geben, und du schaust dir an, ob das hier der Fall ist.
Diese Übung ist Teil des Kurses
Fortgeschrittene Netzwerkanalyse in Python
Anleitung zur Übung
- Instanziiere einen neuen Graphen namens
G_sub, der eine Teilmenge der Kanten enthält. - Füge Knoten aus
Ghinzu, einschließlich der Knotenmetadaten. - Füge Kanten hinzu, die die Kriterien erfüllen, mit der Methode
.add_edges_from(). - Erzeuge die Studierenden-Projektion
G_student_subausG_submit der Funktionnx.bipartite.projected_graph(). - Berechne die Degree Centrality der Studierenden-Projektion mit
nx.degree_centrality()(verwende nicht die bipartite Version). - Hänge die durchschnittliche Degree Centrality an die Liste
mean_dcsan. Achte darauf,dc.values()zuerst in eine Liste zu konvertieren. - Klicke auf 'Antwort senden', um die Grafik zu sehen!
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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()