复杂网络之Networkx

盼盼    2020-03-06 21:03

1:数据构造
新建excel表格,输入邻接矩阵:
第一行代表边:a-b ,a-c, a-d三条有向边
其余各行以此类推。
完成数据后,将excel表格另存为.txt文件,随后保存为relation.adjlist即可。
2:读取文件及可视化
import networkx as nx 
import matplotlib.pyplot as plt
#G = nx.read_adjlist('config/relation.adjlist')#默认无向图
G = nx.read_adjlist('config/relation.adjlist',create_using=nx.DiGraph())#创建有向图 
#nx.draw(G) 
nx.draw(G,with_labels = True) 
plt.show()
3:数据分析:
网络分析常用函数包括以下几种:
nx.degree(G)// 计算图的密度,其值为边数m除以图中可能边数(即n(n-1)/2)
nx.degree_centrality(G)//节点度中心系数。通过节点的度表示节点在图中的重要性,默认情况下会进行归一化,其值表达为节点度d(u)除以n-1(其中n-1就是归一化使用的常量)。这里由于可能存在循环,所以该值可能大于1.
nx.closeness_centrality(G)//节点距离中心系数。通过距离来表示节点在图中的重要性,一般是指节点到其他节点的平均路径的倒数,这里还乘以了n-1。该值越大表示节点到其他节点的距离越近,即中心性越高。
nx.betweenness_centrality(G)//节点介数中心系数。在无向图中,该值表示为节点作占最短路径的个数除以((n-1)(n-2)/2);在有向图中,该值表达为节点作占最短路径个数除以((n-1)(n-2))。
nx.transitivity(G)//图或网络的传递性。即图或网络中,认识同一个节点的两个节点也可能认识双方,计算公式为3*图中三角形的个数/三元组个数(该三元组个数是有公共顶点的边对数,这样就好数了)。
nx.clustering(G)//图或网络中节点的聚类系数。计算公式为:节点u的两个邻居节点间的边数除以((d(u)(d(u)-1)/2)。
nx.transitivity(G)//图或网络的传递性。即图或网络中,认识同一个节点的两个节点也可能认识双方,计算公式为3*图中三角形的个数/三元组个数(该三元组个数是有公共顶点的边对数,这样就好数了)。
分析手工构建的网络:
print(nx.degree_centrality(G))#节点度中心系数  已归一化
print(nx.closeness_centrality(G))#节点距离中心系数
print(nx.betweenness_centrality(G))#节点介数中心系数
原文链接:https://blog.csdn.net/rao569094559/article/details/80886346
Last Modified: 2020-03-06 21:03
Views: 2.2K

[[total]] comments

Post your comment
  1. [[item.time]]
    [[item.user.username]] [[item.floor]]Floor
  2. Click to load more...
  3. Post your comment