【Python】networkxネットワーク分析に関するいくつかの指標
2486 ワード
(1)ネットワークの読み出し
(2)各種指標
nx.degree(G)#図の密度を計算し、その値は辺数mを図中の可能な辺数(すなわちn(n-1)/2)で割ったものである.
nx.clustering(G)#ネットワークノードのクラスタリング係数.計算式は、ノードuの2つの隣接ノード間の辺数を((d(u)(d(u)−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)#図またはネットワークの伝達性.すなわち、図またはネットワークでは、同じノードを認識する2つのノードが両方を認識する可能性もあり、計算式は3*図中の三角形の個数/三元群の個数(この三元群の個数は共通の頂点を持つ辺対数であり、これで数えることができる).
nx.diameter(G)#ネットワーク直径’
nx.average_shortest_path_length(G)#ネットワーク最短パス
(3)より多くの分析アルゴリズム
中国語のチュートリアル:https://www.osgeo.cn/networkx/reference/algorithms/index.html
def load_graph(file_path):
with open(file_path, "r") as fd:
data = fd.readlines()
# , , # )
title = data[0]
data = data[1:]
# , G
edges = [it.strip().strip(",").split(",")[:2] for it in data]
G = nx.DiGraph()
G.add_edges_from(edges)
return G
(2)各種指標
nx.degree(G)#図の密度を計算し、その値は辺数mを図中の可能な辺数(すなわちn(n-1)/2)で割ったものである.
nx.clustering(G)#ネットワークノードのクラスタリング係数.計算式は、ノードuの2つの隣接ノード間の辺数を((d(u)(d(u)−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)#図またはネットワークの伝達性.すなわち、図またはネットワークでは、同じノードを認識する2つのノードが両方を認識する可能性もあり、計算式は3*図中の三角形の個数/三元群の個数(この三元群の個数は共通の頂点を持つ辺対数であり、これで数えることができる).
nx.diameter(G)#ネットワーク直径’
nx.average_shortest_path_length(G)#ネットワーク最短パス
def graph_index(G):
# G = nx.random_graphs.barabasi_albert_graph(1000, 3) # n=1000,m=3 BA
print(" :", G.number_of_nodes())
print(" :", G.number_of_edges())
print(" (average clustering): ", nx.average_clustering(G))
print(" (transitivity): ", nx.transitivity(G))
print(" (diameter): ", nx.diameter(G))
print(" (average shortest path length): ", nx.average_shortest_path_length(G))
degree_centrality = nx.degree_centrality(G)
closeness_centrality = closeness_centrality.values()
betweenness_centrality = betweenness_centrality.values()
print(" (degree centrality): ", np.average(degree_centrality.values()))
print(" (closeness centrality): ", np.average(closeness_centrality.values()))
print(" (betweenness centrality): ", np.average(betweenness_centrality.values()))
# NetworkX , DFS、BFS、 、 、
# path = nx.all_pairs_shortest_path(G) # , G
# print(path[0][2]) # 0、2 : [0, 1, 2]
(3)より多くの分析アルゴリズム
中国語のチュートリアル:https://www.osgeo.cn/networkx/reference/algorithms/index.html