使用 networkx 寻找弱关系
Finding weak ties using networkx
我正在尝试根据重要性查找 weak ties as defined by Granovetter. So far I have tried using centrality measurements to plot the Stanford Facebook network dataset (facebook_combined.txt
)。下图使用度中心性。我用蓝色矩形表示了一些我希望找到的节点 ('weak ties')。
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)
以下是一些其他大小函数的示例图:
相同数据,按介数中心性确定大小:
并且接近中心性:
以及 PageRank:
请注意,弱连接或桥梁指的是边缘,而您正在寻找节点级别的度量。您可能对 Ron Burt 的 structural hole 概念感兴趣。占据结构孔的节点是代理,连接具有有限重叠的组 - 听起来像你正在寻找的东西。
NetworkX(如果我没记错的话,从 2.0 版开始)实现了 Burt's constraint measure。伯特说,如果一个节点具有低约束,它就会占据一个结构孔。 1 减去节点的约束分数似乎可以很好地突出社区之间的节点,但并非在所有情况下都是如此。
这是代码。当心 - 计算约束需要一些时间!
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')
我正在尝试根据重要性查找 weak ties as defined by Granovetter. So far I have tried using centrality measurements to plot the Stanford Facebook network dataset (facebook_combined.txt
)。下图使用度中心性。我用蓝色矩形表示了一些我希望找到的节点 ('weak ties')。
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)
以下是一些其他大小函数的示例图:
相同数据,按介数中心性确定大小:
并且接近中心性:
以及 PageRank:
请注意,弱连接或桥梁指的是边缘,而您正在寻找节点级别的度量。您可能对 Ron Burt 的 structural hole 概念感兴趣。占据结构孔的节点是代理,连接具有有限重叠的组 - 听起来像你正在寻找的东西。
NetworkX(如果我没记错的话,从 2.0 版开始)实现了 Burt's constraint measure。伯特说,如果一个节点具有低约束,它就会占据一个结构孔。 1 减去节点的约束分数似乎可以很好地突出社区之间的节点,但并非在所有情况下都是如此。
这是代码。当心 - 计算约束需要一些时间!
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')