Mulai sekarangMulai gratis

Temukan forum terpopuler per hari: II

Kerja bagus pada latihan sebelumnya — Anda telah menulis kode yang membuat daftar graf deret waktu. Sekarang, Anda akan menuntaskan latihan tersebut — yaitu, Anda akan mencari tahu berapa banyak forum yang memiliki skor forum terpopuler pada basis harian!

Salah satu hal yang akan Anda lakukan di sini adalah "dictionary comprehension" untuk memfilter sebuah kamus. Ini sangat mirip dengan list comprehension untuk memfilter daftar, hanya saja sintaksnya seperti: {key: val for key, val in dict.items() if ...}. Ingat hal itu!

Latihan ini merupakan bagian dari kursus

Analisis Jaringan Menengah di Python

Lihat Kursus

Instruksi latihan

  • Dapatkan degree centrality menggunakan nx.bipartite.degree_centrality(), dengan G_sub dan forum_nodes sebagai argumen.
  • Filter kamus sehingga hanya berisi degree centrality forum. Pasangan key: val pada ekspresi keluaran harus n, dc. Lakukan iterasi atas dc.items() dan periksa apakah n ada di forum_nodes.
  • Identifikasi forum terpopuler — yaitu yang memiliki degree centrality tertinggi (max(forum_dcs.values())) dan nilai DC-nya tidak nol.
  • Tambahkan nilai dc tertinggi ke highest_dcs.
  • Buat plot!
    • Gunakan list comprehension untuk plot pertama, di mana Anda melakukan iterasi atas most_popular_forums (yang merupakan daftar dari daftar) dengan menggunakan forums sebagai variabel iterator. Ekspresi keluarannya harus berupa jumlah forum terpopuler, dihitung menggunakan len().
    • Untuk plot kedua, gunakan highest_dcs dan plt.plot() untuk memvisualisasikan skor degree centrality teratas.

Latihan interaktif langsung praktik

Cobalah latihan ini dengan melengkapi kode contoh ini.

# 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()
Edit dan Jalankan Kode