python游走代码_python实现BA网络选取节点(deepwalk选取下一个游走节点)
发布日期:2021-06-24 15:56:46 浏览次数:3 分类:技术文章

本文共 771 字,大约阅读时间需要 2 分钟。

在BA网络中,使用累积和的方法,也就是轮赌法来选择下一个连接的节点,累积和就是把每个节点的度除以总和,然后拉伸到一个坐标中,然后随机产生一个随机数,该随机数落在哪个区域,我们就选择连接哪一个节点。

当然,该方法也可以用到deepwalk的随机游走选择下一个游走节点过程中。

我们把该原理引入到了deepwalk方法中,替代了deepwalk中的choice这个随机选择下一个节点的方法,效果也是可以的。

具体代码如下;

import numpy as np

import random

unnormalized_probs = []

#node id

node = [1,5,3,7,9]

snode = sorted(node)

# weights for nodes

a=[2,2,2,2,2]

norm_const = sum(a)

normalized_probs = [float(u_prob)/norm_const for u_prob in a]

b=np.cumsum(normalized_probs)

y=random.random()

c=np.where(b>y)[0]

print snode

print normalized_probs

print b

print y

print c[0]

print snode[c[0]]

以上算法,我们已经书写论文,效果也是比np.choice的方法好。具体的原因是choice是一个完全的随机,产生的随机数并不是均匀分布的。我们的轮赌法产生的随机数是离散的均匀分布。符合复杂网络生成规则,即节点度优先连接规则。现有的很多成果表明,优先连接是一种合理的复杂网络生成方法。把这个方法应用到deepwalk选择下一个随机游走节点的算法中,也是很好的改进了deepwalk算法。

转载地址:https://blog.csdn.net/weixin_33682804/article/details/112836455 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:java sublist_java中利用List的subList方法实现对List分页(简单易学)
下一篇:switchresx卸载_SwitchResX

发表评论

最新留言

不错!
[***.144.177.141]2024年04月26日 04时37分57秒