dokimes.py 文件源码

python
阅读 22 收藏 0 点赞 0 评论 0

项目:TextAsGraphClassification 作者: NightmareNyx 项目源码 文件源码
def random_walk(G, steps):
    def walk(G, node, prev_node, steps):
        if steps == 0:
            return 0
        steps -= 1
        neighs = G.neighbors(node)
        neighs_attrs = nx.get_node_attributes(G.subgraph(neighs), 'label')
        neighs_attrs = list(neighs_attrs.values())
        if prev_node is not None:
            neighs_attrs[neighs.index(prev_node)] = 0  # we don't want to return to the previous node
        choice = np.random.choice(a=len(neighs), p=neighs_attrs / np.sum(neighs_attrs))
        val = walk(G, node=neighs[choice], prev_node=node, steps=steps)
        return neighs_attrs[choice] + val

    kernel_value = 0
    for node_attr in G.nodes(data=True):
        node, attr = node_attr
        num_nodes = G.number_of_nodes(), G.number_of_nodes()
        for step in range(steps):
            neighs = G.neighbors(node)
            kernel_value += (step / steps) * walk(G, node=neighs[0], prev_node=None, steps=steps)
    return kernel_value
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号