前置き SimRankはグラフにおけるノード間の類似度を(再帰的に)計算する手法 共通の隣接ノードをもっていなくても類似度を計算できるという特徴を持つ 論文 わかりやすい日本語の説明 Wikipedia(英語) ちなみに、SimRank論文の第二著者は超著名なDB研究者 import numpy as np def simrank(G,C,n,t=10): S = np.identity(n) I = np.identity(n) G = normalize(G) i = 1 while True: S = C * np.dot(np.dot(G.T,S),G) + (1-C) * I for j in range(n): S[j][j] = 1 if i >= t: break i += 1 return S def bipertite_simrank(G,C,n,m,diag_1=Tr
![PythonでSimRankを実装した - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/f8ddc20af487d0f39fcc1793ed9ab14fbad7c84c/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9UHl0aG9uJUUzJTgxJUE3U2ltUmFuayVFMyU4MiU5MiVFNSVBRSU5RiVFOCVBMyU4NSVFMyU4MSU5NyVFMyU4MSU5RiZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1jbGlwPWVsbGlwc2lzJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9NzVhNjcyZmM0OGVlZWIyZTcxMDlkYzBmOTU5YTI2YzI%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQweWFtYWd1Y2hpeXV0byZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9ODhiMWMzYzNhZmZmZDQyNTQ2MmI4OGU5OTVhMDA3ZjM%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D16e208b88d3fc71a1bc039c41b7a81c7)