node2vec是否支持负边权重?

问题描述 投票:1回答:1

node2vec是否为负权重的边提供支持?我有一个边缘列表,其中有几个边是负值的,但我很奇怪在运行代码时得到ZeroDivisionError。没有零边缘,但我检查过。

编辑:被要求分享代码。我没有对原始回购进行任何更改,所以我在这里粘贴了抛出错误的确切行。

unnormalized_probs = []
    for dst_nbr in sorted(G.neighbors(dst)):
        if dst_nbr == src:
            unnormalized_probs.append(G[dst][dst_nbr]['weight']/p)
        elif G.has_edge(dst_nbr, src):
            unnormalized_probs.append(G[dst][dst_nbr]['weight'])
        else:
            unnormalized_probs.append(G[dst][dst_nbr]['weight']/q)
    norm_const = sum(unnormalized_probs)
    normalized_probs =  [float(u_prob)/norm_const for u_prob in unnormalized_probs]

在最后一行中获取ZeroDivisionError错误。我的边缘列表作为输入,如下所示:

0 0 1
234 11 -2
12 0 -1

零值节点不是问题,它们不是在我在正节点值上运行代码之前。

python python-3.x graph nodes word2vec
1个回答
0
投票

我想通了。添加权重值(存储在非标准化概率中)以获得称为“norm_const”的值,然后将非正规化的prob划分。因此,由于它们被添加,出现零事件的可能性,因此零分割错误。

© www.soinside.com 2019 - 2024. All rights reserved.