もう一方のパーティションにある共有ノード
レコメンデーションシステムの考え方を身につけるために、まずは基礎から始めます。ここでは二部グラフにおけるユーザー同士の類似度の計算に焦点を当てます。
あなたの課題は、2つのノードを受け取り、その2つのユーザーノードの間で共有されているリポジトリノードの集合を返す関数を書くことです。
この演習では、.neighbors()、set()、.intersection() といったメソッドや関数、そしてあなたが定義する shared_partition_nodes 関数が役に立ちます!
この演習はコースの一部です
Python 中級ネットワーク解析
演習の手順
- 3つの引数(グラフ
G、node1、node2)を受け取り、node1とnode2の間で共有されるノードの集合を返すshared_partition_nodes()という関数を書いてください。assert文と'bipartite'キーワードを使って、node1とnode2が同じパーティションに属していることを確認します。node1の隣接ノードを取得してnbrs1として保存します。node2の隣接ノードを取得してnbrs2として保存します。
- 集合の
.intersection()メソッドを使って、nbrs1とnbrs2の重なりを計算します。 - あなたの
shared_partition_nodes()関数とlen()関数を組み合わせて、ユーザー'u7909'と'u2148'の間で共有されているリポジトリ数を出力してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
def ____:
# Check that the nodes belong to the same partition
assert G.nodes[____]['bipartite'] == G.nodes[____]['bipartite']
# Get neighbors of node 1: nbrs1
nbrs1 = ____
# Get neighbors of node 2: nbrs2
nbrs2 = ____
# Compute the overlap using set intersections
overlap = ____(____).____(____)
return overlap
# Print the number of shared repositories between users 'u7909' and 'u2148'
print(____(____))