各ノードの近傍ノード数を求める
ノードが重要かどうかを評価するにはどうすればよいでしょうか?いくつか方法がありますが、ここでは 1 つの指標、つまりノードが持つ近傍ノードの数を見ていきます。
あらゆる NetworkX グラフ G は、ノード n の近傍ノードを返すイテレータである .neighbors(n) メソッドを提供しています。まずは IPython Shell で Twitter ネットワーク T を使い、ノード 1 の近傍ノードを取得して、この関数の使い方に慣れましょう。その後、この演習では、近傍ノードが m のすべてのノードを返す関数を書くのがあなたの仕事です。
この演習はコースの一部です
Pythonで学ぶネットワーク分析入門
演習の手順
nodes_with_m_nbrs()という関数を作成し、引数はGとmの 2 つ、戻り値は近傍ノードがmのすべてのノードにしてください。次のように実装します。Gのすべてのノード(メタデータは含めません)を反復処理します。.neighbors()メソッドにlen()とlist()を組み合わせ、グラフGにおけるノードnの近傍ノードの合計数を計算します。- ノード
nの近傍ノード数がmと等しければ、集合nodesの.add()メソッドでnを追加します。
- ノード
Gのすべてのノードを反復し終えたら、集合nodesを返します。
- 作成した
nodes_with_m_nbrs()関数を使って、グラフTの中で近傍ノードが 6 のすべてのノードを取得してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Define nodes_with_m_nbrs()
def ____:
"""
Returns all nodes in graph G that have m neighbors.
"""
nodes = set()
# Iterate over all nodes in G
for n in ____:
# Check if the number of neighbors of n matches m
if ____ == ____:
# Add the node n to the set
____
# Return the nodes with m neighbors
return nodes
# Compute and print all nodes in T that have 6 neighbors
six_nbrs = ____
print(____)