BaşlayınÜcretsiz Başlayın

Gün gün en popüler forumları bul: II

Önceki egzersizde harika iş çıkardın — zaman serisi grafik listesini oluşturan kodu yazmıştın. Şimdi o egzersizi tamamlayacaksın — yani, gün bazında kaç forumun en popüler forum puanına sahip olduğunu bulacaksın!

Burada yapacaklarından biri de bir sözlüğü filtrelemek için "sözlük üreteci" kullanmak olacak. Bu, bir listeyi filtrelemek için kullanılan liste üretecine çok benzer; yalnızca söz dizimi şu şekildedir: {key: val for key, val in dict.items() if ...}. Bunu aklında tut!

Bu egzersiz

Python ile Orta Düzey Ağ (Network) Analizi

kursunun bir parçasıdır
Kursu Görüntüle

Egzersiz talimatları

  • G_sub ve forum_nodes argümanlarıyla nx.bipartite.degree_centrality() kullanarak derece merkeziliğini hesapla.
  • Sözlüğü, yalnızca forum derece merkezilikleri kalacak şekilde filtrele. Çıktıdaki key: val çifti n, dc olmalı. dc.items() üzerinde dolaş ve nin forum_nodes içinde olup olmadığını kontrol et.
  • En popüler forum(lar)ı belirle — en yüksek derece merkeziliğe (max(forum_dcs.values())) sahip olmalı ve DC değeri sıfır olmamalı.
  • En yüksek dc değerlerini highest_dcs listesine ekle.
  • Grafiklerini oluştur!
    • İlk grafik için, most_popular_forums (liste listesi) üzerinde forums yineleyici değişkeniyle dolaştığın bir liste üreteci kullan. Çıktı ifadesi, len() kullanarak hesaplanan en popüler forumların sayısı olmalı.
    • İkinci grafik için, en yüksek derece merkezilik puanını görselleştirmek amacıyla highest_dcs ve plt.plot() kullan.

Uygulamalı interaktif egzersiz

Bu örnek kodu tamamlayarak bu egzersizi bitirin.

# 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()
Kodu Düzenle ve Çalıştır