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ırEgzersiz talimatları
G_subveforum_nodesargümanlarıylanx.bipartite.degree_centrality()kullanarak derece merkeziliğini hesapla.- Sözlüğü, yalnızca forum derece merkezilikleri kalacak şekilde filtrele. Çıktıdaki
key: valçiftin, dcolmalı.dc.items()üzerinde dolaş veninforum_nodesiç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
dcdeğerlerinihighest_dcslistesine ekle. - Grafiklerini oluştur!
- İlk grafik için,
most_popular_forums(liste listesi) üzerindeforumsyineleyici 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_dcsveplt.plot()kullan.
- İlk grafik için,
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()