Graph 如何计算加权网络中的邻域重叠?
如何计算加权图中两个节点(I,j)之间的邻域重叠Graph 如何计算加权网络中的邻域重叠?,graph,networkx,Graph,Networkx,如何计算加权图中两个节点(I,j)之间的邻域重叠 “…我们将连接A和B的边的邻域重叠定义为比率:(同时是A和B的邻居的节点数)/(至少是A或B中一个邻居的节点数),其中在分母中,我们不计算A或B本身(即使A是B的邻居,B是A的邻居)。” networkx有一个内置函数,用于查找图形中两个节点的公共邻居:。现在我们只需要找到与A或B相邻的节点数 | N(u) ⋃ N(v) | = |N(u)| + |N(v)| - | N(u) ⋂ N(v)| 其中N(u)是u的邻域集。因为我们在分母中不计算A
“…我们将连接A和B的边的邻域重叠定义为比率:(同时是A和B的邻居的节点数)/(至少是A或B中一个邻居的节点数),其中在分母中,我们不计算A或B本身(即使A是B的邻居,B是A的邻居)。”
networkx
有一个内置函数,用于查找图形中两个节点的公共邻居:。现在我们只需要找到与A或B相邻的节点数
| N(u) ⋃ N(v) | = |N(u)| + |N(v)| - | N(u) ⋂ N(v)|
其中N(u)
是u
的邻域集。因为我们在分母中不计算A或B,所以我们需要从|N(u)中减去2⋃ N(v)|
def邻域重叠(g,u,v):
n_公共_nbrs=len(集合(nx.公共_邻域(g,u,v)))
n_join_nbrs=g.degree(u)+g.degree(v)-n_common_nbrs-2
返回n_普通编号/n_加入编号
但是,您仍然需要确定分母为0时会发生什么情况,即当节点A和B构成图形的连接组件时。我知道问题的标签是
networkx
,但由于这是Google上第一个弹出的东西,因此在igraph
上,函数将是
neighborhood_overlap <- function(g, node1, node2)
{
nh1 = neighborhood(graph=g, order=1, nodes=node1)[[1]]
nh2 = neighborhood(graph=g, order=1, nodes=node2)[[1]]
common = intersect(nh1, nh2)
commonl = length(common)
# | N(u) ⋃ N(v) | = |N(u)| + |N(v)| - | N(u) ⋂ N(v)|
union = degree(net_vc, v=node1) + degree(net_vc, v=node2) - commonl - 2
return(commonl/union)
}
邻域重叠什么是邻域重叠?到目前为止,您尝试了什么?”…我们将连接A和B的边的邻域重叠定义为比率:(同时是A和B的邻居的节点数)/(至少是A或B中一个邻居的节点数),其中在分母中,我们不计算A或B本身(即使A是B的邻居,B是A的邻居)."