使用networkx计算网络的介数中心性

论坛 期权论坛 脚本     
已经匿名di用户   2022-4-26 15:52   3097   0

网络节点的重要性指标介数中心性的计算,使用python的networkx包

import networkx as nx

G = nx.Graph()

# 从文件@filename中读取网络的adjacentMatrix,通过networkx的add_edges方法向对象G中添加边
def readNetwork(filename):
 fin = open(filename, 'r')
 # for line in fin:
 #  for node in line:
 #   print(node, end="")
   
 # lines = fin.readlines()
 # print(len(lines))

 rowCount = 1;
 colCount = 1;
 for line in fin.readlines():
  line = line.split(" ")
  for node in line:
   if node == '1':
    G.add_edge(rowCount, colCount)
   colCount = colCount + 1
  colCount = 1
  rowCount += 1

 print(G.edges())

# 计算网络中的节点的介数中心性,并进行排序输出
def topNBetweeness():
 score = nx.betweenness_centrality(G)
 score = sorted(score.items(), key=lambda item:item[1], reverse = True)
 print("betweenness_centrality: ", score)
 output = []
 for node in score:
  output.append(node[0])

 print(output)
 fout = open("betweennessSorted.data", 'w')
 for target in output:
  fout.write(str(target)+" ")

readNetwork("sf100.data")
topNBetweeness()


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP