node2vec是否支持负边权重?

时间:2019-04-08 03:55:19

标签: python python-3.x graph nodes word2vec

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

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

1 个答案:

答案 0 :(得分:0)

我知道了。将权重值(存储在未归一化的概率中)相加以获得名为“ norm_const”的值,然后将其除以未归一化的概率。因此,由于添加了它们,所以发生零的可能性就增加了,因此除法误差为零。