众所周知,两个顶点的杰卡德相似系数是共同邻居的数量除以与所讨论的两个顶点中至少一个顶点相邻的顶点数量。在 Igraph R 中,有函数相似度.jaccard(),它计算图中任意顶点的上述定义系数。我只想计算相邻顶点的杰卡德系数(即所谓的边的杰卡德系数),并且我想以长度等于所考虑图的边数的向量形式获得结果。我找到了我不熟悉的 Igraph C 库的此类问题的解决方案。我想在Igraph R中获得这样的结果。如何解决这个问题?
最佳答案
您可以通过创建一个函数来计算单个边末端的杰卡德相似度并将其应用于所有边来实现此目的。由于您没有提供任何数据,我将用任意图表来说明。
任意示例图
library(igraph)
set.seed(1234)
g = erdos.renyi.game(10,0.3)
plot(g)
现在将杰卡德相似度函数应用于所有边
sapply(E(g),
function(x) similarity.jaccard(g, as.vector(ends(g,x)))[1,2])
[1] 0.0000000 0.0000000 0.0000000 0.4000000 0.1666667 0.2000000 0.2000000
[8] 0.2500000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
您可以测试一些数据点。例如,第 7 条边位于顶点 2 和 8 之间,杰卡德相似度为 0.2
E(g)[7]
+ 1/13 edge:
[1] 2--8
similarity.jaccard(g, c(2,8))
[,1] [,2]
[1,] 1.0 0.2
[2,] 0.2 1.0
关于r - igraph R中相邻顶点的杰卡德系数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52748708/