LoginSignup
4
9

More than 3 years have passed since last update.

Pythonでネットワーク分析 -- 中心性の分析を簡単に試してみる --

Posted at

1.始めに

ネットワーク分析のわかりやすい目的の一つに、
コミュニティの中心を明らかにするようなタスクがあります。

networkxで簡単にとっかかりを作れるとのことで、
簡単なサンプルコードで実験をしてみました。

1.1.固有ベクトル中心性

より多くの繋がりを持ったノードが有利という前提のもと、
「自身が多くの繋がりを持つ」かつ「多くの繋がりを持つノードと繋がっている」ほど有利であるという考え方に基づいて定義された中心性。

1.2.媒介中心性

ある直接の繋がりを持たないノードAとノードBが複数のノードを経由することで繋がりを持つとき、経由されるノードは「情報伝達の際に何らかの役割をもつ」と考えられる。
この時「情報伝達の役割を担っている」ほど有利であるという考え方に基づいて定義された中心性。

2.参照する関数など

  • networkx.eigenvector_centrality_numpy(グラフ):固有ベクトル中心性のリストを返します。
  • networkx.communicability_betweenness_centrality(グラフ):媒介中心性のリストを返します。

3.サンプルコード

# 固有ベクトル中心性が大きいほど頂点を大きくする

import numpy as np
import networkx as nx
import matplotlib.pyplot as plt

G = nx.karate_club_graph()

# 固有ベクトル中心性を求める![ダウンロード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513505/fa4d485e-ba1a-2508-df26-2fbd98c91eb9.png)

eignv_cent = nx.eigenvector_centrality_numpy(G)

# 頂点のサイズを決める
# サンプルでは1000倍にする
node_size = [1000 * size for size in list(eignv_cent.values())]

# 描画
nx.draw_networkx(G, node_size=node_size)
plt.show()

4.サンプルコードの出力結果

ダウンロード.png

4
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
9