始める無料で始める

学生パーティションで、日ごとの平均次数中心性を抽出する

ここでは、全ノードの平均次数中心性が、時間とともにプロットされるエッジ数と相関しているかを確認します。必ずしも強い相関があるとは限らないので、その様子を見ていきます。

この演習はコースの一部です

Python 中級ネットワーク解析

コースを見る

演習の手順

  • エッジのサブセットを含む新しいグラフ G_sub を作成します。
  • ノードメタデータを含めて、G からノードを追加します。
  • 条件を満たすエッジを .add_edges_from() メソッドで追加します。
  • nx.bipartite.projected_graph() を使い、G_sub から学生側の射影 G_student_sub を取得します。
  • nx.degree_centrality()(二部グラフ用ではない方)で、学生側射影の次数中心性を計算します。
  • 平均次数中心性をリスト mean_dcs に追加します。追加前に必ず dc.values() をリストに変換してください。
  • "Submit Answer" を押してプロットを確認しましょう!

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

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()
コードを編集して実行