Začněte nyníZačněte zdarma

Najdi nejpopulárnější fóra den po dni: II

Skvělá práce v předchozím cvičení – napsal/a jsi kód, který vytvořil seznam grafů časové řady. Teď ho dokončíš: zjistíš, kolik fór dosáhlo skóre nejpopulárnějšího fóra v jednotlivých dnech!

Jednou z věcí, které tu budeš dělat, je "slovníkové porozumění" pro filtrování slovníku. Je velmi podobné listovému porozumění pro filtrování seznamu, jen syntaxe vypadá takto: {key: val for key, val in dict.items() if ...}. Měj to na paměti!

Toto cvičení je součástí kurzu

Intermediate Network Analysis in Python

Zobrazit kurz

Pokyny k cvičení

  • Získej centralitu stupňů pomocí nx.bipartite.degree_centrality() s argumenty G_sub a forum_nodes.
  • Filtruj slovník tak, aby obsahoval pouze centralitu stupňů pro fóra. Pár key: val ve výstupním výrazu by měl být n, dc. Iteruj přes dc.items() a zkontroluj, zda je n v forum_nodes.
  • Urči nejpopulárnější fórum (nebo fóra) – musí mít nejvyšší centralitu stupňů (max(forum_dcs.values())) a hodnota DC nesmí být nulová.
  • Přidej nejvyšší hodnoty dc do highest_dcs.
  • Vytvoř grafy!
    • Pro první graf použij listové porozumění, ve kterém iteruješ přes most_popular_forums (což je seznam seznamů) s forums jako iterační proměnnou. Výstupní výraz by měl být počet nejpopulárnějších fór, vypočítaný pomocí len().
    • Pro druhý graf použij highest_dcs a plt.plot() k vizualizaci nejvyššího skóre centrality stupňů.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# Import necessary modules
from datetime import timedelta
import networkx as nx
import matplotlib.pyplot as plt

most_popular_forums = []
highest_dcs = []
curr_day = dayone 
td = timedelta(days=1)  

while curr_day < lastday:  
    if curr_day.day == 1:  
        print(curr_day)  
    G_sub = nx.Graph()
    G_sub.add_nodes_from(G.nodes(data=True))   
    G_sub.add_edges_from([(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 degree centrality 
    dc = ____
    # Filter the dictionary such that there's only forum degree centralities
    forum_dcs = {____:____ for ____, ____ in ____ if n in ____}
    # Identify the most popular forum(s) 
    most_popular_forum = [n for n, dc in ____ if dc == ____(____) and dc != 0] 
    most_popular_forums.append(most_popular_forum) 
    # Store the highest dc values in highest_dcs
    highest_dcs.append(max(____))
    
    curr_day += td  
    
plt.figure(1) 
plt.plot([len(____) for ____ in ____], color='blue', label='Forums')
plt.ylabel('Number of Most Popular Forums')
plt.show()

plt.figure(2)
plt.plot(____, color='orange', label='DC Score')
plt.ylabel('Top Degree Centrality Score')
plt.show()
Upravit a spustit kód