跨網路指的是兩個不同的網路,在研究不同網路使用者對齊的時候,需要進行社群相似行的判斷,中間也查了一些資料,想到乙個解決方法用種子節點。
下面是我寫的乙個小demo
先把種子節點和要兩個網路的社群劃分好
net1_anchor_known_list =
['abc'
,'bc'
,'cc',2
,3,7
]#net1種子節點
net2_anchor_known_list =
['abc'
,'bc'
,'cc',2
,3,7
]#net2種子節點
net1_communities =[[
'abc'
,'tom'
,'jack'
'bc'
,'cc'
,'d'],
[2,4
,7],
[3,5
]]net2_communities =[[
'a',
'bc'
,'cc'
,'tom',5
,7],
[2,3
,'jack'
]]
然後將有共同種子節點的社群一一對應起來,以便於接下來求解相似性。
seed_pair =
for i in
range
(len
(net1_communities)):
for j in net1_communities[i]
:if j in net1_anchor_known_list:
for k in
range
(len
(net2_communities)):
if j in net2_communities[k]
: seed_pair[
str(i+1)
+str
(k+1)+
'社群']=
(net1_communities[i]
,net2_communities[k]
)
seed_pair
再用種子節點對一一對應後,得到相對應的社群,最後就可以利用種子節點共同個數來求解相似性了
for i in seed_pair.items():
num_counter =
0for j in f_anchor_known_list:
if j in i[1]
[0]and j in i[1]
[1]:
num_counter +=
1 sim =
2*num_counter/
(len
(i[1][
0])+
len(i[1]
[1])
)print
('第{}的相似度為'
.format
(i[0
],sim)
)
第11社群的相似度為0.182
第22社群的相似度為0.333
第21社群的相似度為0.222
第32社群的相似度為0.400
最後就可以求解出,跨網路的社群相似性了。 相似性度量
二元向量的相似性度量 每一維都少的資訊量,主要是0,1等有 or 沒有屬性 dice 2 x y x y 2保證 0,1 維數不一致時,差別大。jaccard x y x y 交疊程度小時,值較低 交疊係數 x y min 互相之間的包含性,1 cosine x y 根號 x y 對於實值 只有co...
資料相似性
首先模擬一些資料出來 假設有這樣一些id是1 5的條目,然後有幾個人對他們看過的條目進行了評分 1 5 那麼我們可能有這樣的一組資料,格式是 人名 a b c 給定兩個人,如何計算他們的相似度,比如,在b和c裡,誰和a的評分最相似?給出一些方法 1 簡單匹配係數 matching coefficie...
相似性度量
一般而言,定義乙個距離函式d x,y 需要滿足以下幾個準則 1.d x,x 0 到自己的距離為0 2.d x,y 0 距離要非負 3.對稱性,d x,y d y,x 如果a到b距離是a,那麼b到a的距離也應該是a 4.三角形法則 兩個之和大於第三邊 d x,k d k,y d x,y 滿足這4個條件...