我具有使用networkx
创建的以下图形。
import networkx as nx
G = nx.Graph()
G.add_nodes_from(["John", "Mary", "Jill", "Todd",
"iPhone5", "Kindle Fire", "Fitbit Flex Wireless", "Harry Potter", "Hobbit"])
G.add_edges_from([
("John", "iPhone5"),
("John", "Kindle Fire"),
("Mary", "iPhone5"),
("Mary", "Kindle Fire"),
("Mary", "Fitbit Flex Wireless"),
("Jill", "iPhone5"),
("Jill", "Kindle Fire"),
("Jill", "Fitbit Flex Wireless"),
("Todd", "Fitbit Flex Wireless"),
("Todd", "Harry Potter"),
("Todd", "Hobbit"),
])
[现在,我想执行random walk with restarts
以识别与John
最相似的用户。我在networkx
中搜索了文档,但在networkx
中找不到该文档的实现。
[请让我知道是否有random walk with restarts
的python库/代码可以这样做。
如果需要,我很乐意提供更多详细信息。
个性化PageRank [implemented in networkx]本质上是一个随机游走,如果个性化矢量的起始节点为1,其他位置为0,则重新启动。”>
以下代码
nx.pagerank_numpy(G, personalization={"John": 1})
然后产生一个具有在每个节点中结束的概率的字典
{'John': 0.24958826532666656, 'Mary': 0.1229452674202248, 'Jill': 0.12294526742022475, 'Todd': 0.04506174037342413, 'iPhone5': 0.17574399763529416, 'Kindle Fire': 0.17574399763529416, 'Fitbit Flex Wireless': 0.08243647797726429, 'Harry Potter': 0.012767493105803515, 'Hobbit': 0.012767493105803515}
从此词典中,您可以选择最高概率的用户。