簡體   English   中英

與 iGraph 中的邊屬性相似

[英]Similarity as edge attribute in iGraph

假設我們有一些圖 g,然后我們從 g 計算每對節點之間的一些相似性:

g <- graph.ring(10)
g_sim <- similarity.dice(g)

問題是:如何使用來自 g_sim 的數據為來自 g 的邊分配權重? 換句話說:如果 g 中有邊 A--B,我希望該邊的屬性等於我們在 g_sim 中對 A,B 的值。

理論上你可以做

g <- graph.ring(10)
g_sim <- similarity.dice(g)
el <- get.edgelist(g)
E(g)$weight <- g_sim[el]

但在這種情況下, similarity.dice不是一個好的衡量標准。 如果將鄰接(邊實際存在的地方)與非零相似度值進行比較

get.adjacency(g)
#  [1,] . 1 . . . . . . . 1
#  [2,] 1 . 1 . . . . . . .
#  [3,] . 1 . 1 . . . . . .
#  [4,] . . 1 . 1 . . . . .
#  [5,] . . . 1 . 1 . . . .
#  [6,] . . . . 1 . 1 . . .
#  [7,] . . . . . 1 . 1 . .
#  [8,] . . . . . . 1 . 1 .
#  [9,] . . . . . . . 1 . 1
# [10,] 1 . . . . . . . 1 .

g_sim
#       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#  [1,]  1.0  0.0  0.5  0.0  0.0  0.0  0.0  0.0  0.5   0.0
#  [2,]  0.0  1.0  0.0  0.5  0.0  0.0  0.0  0.0  0.0   0.5
#  [3,]  0.5  0.0  1.0  0.0  0.5  0.0  0.0  0.0  0.0   0.0
#  [4,]  0.0  0.5  0.0  1.0  0.0  0.5  0.0  0.0  0.0   0.0
#  [5,]  0.0  0.0  0.5  0.0  1.0  0.0  0.5  0.0  0.0   0.0
#  [6,]  0.0  0.0  0.0  0.5  0.0  1.0  0.0  0.5  0.0   0.0
#  [7,]  0.0  0.0  0.0  0.0  0.5  0.0  1.0  0.0  0.5   0.0
#  [8,]  0.0  0.0  0.0  0.0  0.0  0.5  0.0  1.0  0.0   0.5
#  [9,]  0.5  0.0  0.0  0.0  0.0  0.0  0.5  0.0  1.0   0.0
# [10,]  0.0  0.5  0.0  0.0  0.0  0.0  0.0  0.5  0.0   1.0

您將看到所有邊的權重都為similarity.dice度量是公共鄰居數除以頂點度數總和的兩倍。 顯然,頂點本身被排除在計算之外。 所以這意味着圓上的兩個連接的頂點不共享鄰居,所以它們的權重為 0。所以一切正常,只是similarity.dice不是給這個圖的邊加權的好選擇,因為所有的權重都是 0 .

感謝@user368090,這是一個看起來更好的

g <- graph.famous("Krackhardt_Kite")
g_sim <- similarity.dice(g)
el <- get.edgelist(g)
E(g)$weight <- g_sim[el]
plot(g, edge.width=E(g)$weight*10)

加權 Krackhardt_Kite 圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM