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
零值节点不是问题,当我在正值节点上运行代码时,它们不是以前。
答案 0 :(得分:0)
我知道了。将权重值(存储在未归一化的概率中)相加以获得名为“ norm_const”的值,然后将其除以未归一化的概率。因此,由于添加了它们,所以发生零的可能性就增加了,因此除法误差为零。