使用networkx找到弱关系

时间:2018-06-15 11:15:29

标签: python networkx graph-theory

我想找到weak ties as defined by Granovetter。到目前为止,我已尝试使用中心度量来根据重要性绘制Stanford Facebook network datasetfacebook_combined.txt)。下图使用度中心性。我用蓝色矩形表示了一些我希望找到的节点(“弱关系”)。

degree centrality

Bridges似乎很接近,但并不完全存在。我该如何继续寻找这些节点?

示例代码:

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)

以下是一些具有其他大小调整功能的示例图:

相同的数据,由中介中心性决定:

betweenness centrality

亲近中心:

closeness centrality

使用PageRank:

PageRank

1 个答案:

答案 0 :(得分:1)

请注意,薄弱的联系或桥梁是指边缘,而您正在寻找节点级别的度量。您可能对Ron Burt的structural hole概念感兴趣。占据结构漏洞的节点是代理,它们以有限的重叠连接组-听起来像您想要的。

NetworkX(从2.0版开始,如果我没记错的话)具有Burt's constraint measure的实现。伯特说,如果节点的约束度较低,则它会占据结构孔。减去节点的约束分数似乎可以很好地突出显示社区之间的节点,尽管并非在每种情况下都如此。

Large, red nodes have low constraint

这是代码。当心-计算约束需要一些时间!

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')