node2vec 是否支持负边权重?
Does node2vec support negative edge weights?
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' 的值,然后将其除以非标准化概率。所以由于它们被添加,出现零发生的可能性,因此零除法错误。
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' 的值,然后将其除以非标准化概率。所以由于它们被添加,出现零发生的可能性,因此零除法错误。