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
零值节点不是问题,它们不是在我在正节点值上运行代码之前。
我想通了。添加权重值(存储在非标准化概率中)以获得称为“norm_const”的值,然后将非正规化的prob划分。因此,由于它们被添加,出现零事件的可能性,因此零分割错误。