本博客涉及python的复杂网络分析工具network的网络
节点和边节点度集合系数的最短距离author:xiao黄缓慢而坚实地生长
首先导入相关的包。
importnetworkxasnximportnumpyasnp #数值计算import scipy as sp #科学计算import matplotlib.pyplot as plt #绘图以美国空手道俱乐部的示例进行说明
空手道网络是复杂网络分析中常用的一个实例网络,用于分析节点中心性和社区结构等问题。 因此,networkx也附带空手道俱乐部网络。
g=NX.Karate_club_graph(#美国空手道俱乐部nx.draw(g ) ) g ) plt.show )的图片如下所示:
可以对上述网络进行参数的变更等操作。 代码如下所示。
#可选布局fig,ax=PLT.subplots (fig size=(8,6 ) ) layout=[ NX.shell _ layout,nx.circular_layout,NX NX.spring _ layout ] pos=layout [5] [ g ] #每个节点的位置坐标nodeid=list(g.nodes () ) node_size=[g.zjdc(i ) I ) ' line_color': 'grey ',' linewidths': 0.1,' width'3360.1,' font_color': 'w' #字体颜色(NX )
节点和边#节点的数量N=g.number_of_nodes () len (g.nodes ) ) #网络中的边的数量L=g.number_of_edges ) ) len )
#节点度G.zjdc(#返回所有节点度g.zjdc ) #返回特定节点度分布图的代码为:
#度分布图degs=dict(NX.zjdc(g ) ) print (zjdcofeachnode : )、degs (print ) ) averagezjdc3360 )、NP.mean (list (dst )
最短距离节点之间的最短距离dij表示离节点I最少可以到达节点j的距离。
介绍几个基本函数
#返回特定节点之间最短距离的#NX.shortest_path_length(g,source=1, target=2) #返回特定节点与所有其他节点之间的最短距离) NX.shortest_path_length ) g source=1) #所有节点之间的最短距离# NX.shortest _ path 两个节点之间的最短距离D12=NX.shortest_path_length(g,返回source=2的d12 ) #节点之间的平均最短距离avg _ d=NX.average _ shortest _ path path
avg _ d=NX.average _ shortest _ path _ length (g ) #最短距离分布pair _ d=NX.shortest _ path _ length (g ) # 任意两个节点之间的距离DD=I(forIing ).reshape(-1 ) print (NP.mean ) DD ) ) bins=NP.arange(-0.5,max ) DD ) 1.5,1.0
聚合系数公式基本上可以找到,但在这里不放
#集成系数#NX.clustering(g )所有节点的集成系数#NX.clustering(g,1 ) )返回特定节点的集成系数的统计分布图
cc=dict(NX.clustering ) g ) )打印) clusteringcoefficientofeachnode : ), cc ) print ) averageclusteringcoefficicication NP.mean (list (cc.values ) ) )统计分布图PLT.figure ) figsize=) 9,5 ) 1 ) PLT.hist ) cc bins=10 ) PLT.xlabel (clusteringcoefficennt ) (PLT.ylabel ) Frequency ) ) PLT.title ) clusteringct 2 ) PLT.Scatter([degs[I]forIing]、[cc[i] for i in g]、c='g ' ) PLT.xlabel('k ' ) #度数PLT.ylabel ) )