使用 networkx 寻找弱关系

Kos*_*dis 5 python graph-theory networkx

我试图找到由 Granovetter 定义弱关系。到目前为止,我已经尝试使用中心性测量根据重要性绘制斯坦福 Facebook 网络数据集( facebook_combined.txt)。下图使用了度中心性。我已经用蓝色矩形表示了我希望找到的一些节点(“弱关系”)。

度中心性

桥梁似乎很近,但并不完全在那里。我应该如何继续寻找这些节点?

示例代码:

import networkx as nx

fb = nx.read_edgelist("facebook_combined.txt")
degree_cent_fb = nx.degree_centrality(fb)

pos_fb = nx.spring_layout(fb ,iterations = 1000)

nsize = np.array ([v for v in degree_cent_fb.values ()])

nsize = 500*( nsize - min(nsize))/(max(nsize) - min(nsize))

nodes = nx.draw_networkx_nodes (fb , pos = pos_fb ,
                                node_size = nsize)
edges = nx.draw_networkx_edges (fb , pos = pos_fb ,
                                alpha = .1)
Run Code Online (Sandbox Code Playgroud)

以下是一些带有其他尺寸调整函数的示例图:

相同的数据,按介数中心性确定大小:

中介中心性

和接近中心性:

亲近中心性

并使用 PageRank:

网页排名

Joh*_*chs 7

请注意,弱联系或桥梁指的是边缘,而您正在寻找节点级度量。您可能对 Ron Burt 的结构孔概念感兴趣。占据结构孔的节点是经纪人,连接具有有限重叠的组 - 听起来就像您正在寻找的那样。

NetworkX(从版本 2.0 开始,如果我没记错的话)有Burt 约束措施的实现。伯特说,如果一个节点的约束较低,那么它就会占据一个结构孔。一减去节点的约束分数似乎很好地突出了社区之间的节点,尽管并非在所有情况下都是如此。

大的红色节点约束较低

这是代码。请注意 - 计算约束需要一些时间!

fb = nx.read_edgelist("facebook_combined.txt")
pos_fb = nx.spring_layout(fb ,iterations = 100)

cons = nx.constraint(fb)

plt.figure(figsize=(15,10))
nsize = np.array ([1-v for v in cons.values()])

nsize = 10**(nsize+1)

nodes = nx.draw_networkx_nodes (fb , pos = pos_fb , node_color=nsize, cmap=plt.cm.coolwarm,
                                node_size = nsize)
edges = nx.draw_networkx_edges (fb , pos = pos_fb , 
                                alpha = .1)

plt.axis('off')
Run Code Online (Sandbox Code Playgroud)