始める無料で始める

編集コミュニティの特徴づけ

これまでに学んだ BFS アルゴリズムと最大クリークの概念を組み合わせて、Arc plot でネットワークを可視化してみましょう。

GitHub のユーザー共同作業ネットワークにおける最大の最大クリークは、サブグラフ G_lmc に割り当てられています。NetworkX のバージョン 2.x 以降では、G.subgraph(nodelist) は元のグラフへの不変ビューのみを返す点に注意してください。変更可能なバージョンを得るには、明示的に .copy() を呼び出す必要があります。

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

Pythonで学ぶネットワーク分析入門

コースを見る

演習の手順

  • クリークから 1 次の近接まで範囲を広げ、そのユーザーをサブグラフに追加します。最初の for ループ内で行います。
    • .add_nodes_from().neighbors() メソッドを使って、G の近傍から G_lmc にノードを追加します。
    • .add_edges_from() メソッドを使って、現在のノードとそのすべての近傍との間に G_lmc へエッジを追加します。そのために、zip() 関数で現在のノードと各近傍からなるタプルのリストを作成します。zip() の第1引数は [node]*len(list(G.neighbors(node)))、第2引数は node の近傍にしてください。
  • 各ノードの次数中心性スコアを、そのノードのメタデータに記録します。
    • 2つ目の for ループで、nx.degree_centrality(G_lmc)[n]G_lmc.nodes[n]['degree centrality'] に代入します。
  • ノードを次数中心性で並べ替えて、このネットワークを Arc plot で可視化します(キーワード引数 sort_by='degree centrality' を使います)。

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

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

# Import necessary modules
from nxviz import arc
import matplotlib.pyplot as plt

# Identify the largest maximal clique: largest_max_clique
largest_max_clique = set(sorted(nx.find_cliques(G), key=lambda x: len(x))[-1])

# Create a subgraph from the largest_max_clique: G_lmc
G_lmc = G.subgraph(largest_max_clique).copy()

# Go out 1 degree of separation
for node in list(G_lmc.nodes()):
    G_lmc.add_nodes_from(____)
    G_lmc.add_edges_from(zip(____, ____))

# Record each node's degree centrality score
for n in G_lmc.nodes():
    ____ = ____

# Create the Arc plot: a
a = ____

# Draw the Arc plot to the screen
a
plt.show()
コードを編集して実行