NetworkXによるネットワーク分析【Pythonでデジマ・D2C】

NetworkXによるネットワーク分析【Pythonでデジマ・D2C】 データ分析

デジタルマーケティングが、今後は重要らしいです。
「デジマ」、「D2C」と言ったワードを目にすることが増えていませんか?

「そんな言葉は全く知らない」という方は、ヤバイです。
マーケティングに関係のない仕事をしていても、必ずあなたに関係してきます。

プログラマーであっても関係してきます。
ビジネス自体が向かう方向であれば、システムもその方向に向かいます。

その際、ビジネスが向かう方向について知識・経験があるかないかはデカいです。
よって、デジタルマーケティングについて学ぶことは重要と言えます。

そこで、この記事ではネットワーク分析に触れていきます。

本記事の内容

  • ネットワーク分析とは?
  • ネットワーク分析ライブラリNetworkX
  • NetworkXのシステム要件
  • NetworkXのインストール
  • NetworkXの動作確認

それでは、上記に沿って解説していきましょう。

ネットワーク分析とは?

ネットワーク分析は、つながりを分析することです。
そして、ネットワーク分析にはいろいろな考え方(理論)があります。

ここでは、グラフ理論をベースにして解説していきます。
グラフ理論では、節(〇)を「ノード」、枝(線)を「エッジ」と呼びます。

ノードは、関係を持つ主体となります。
そして、エッジが主体と主体の関係性を表すモノということです。

ノードの例は、以下。

  • 人(SNSアカウント)
  • 企業
  • Webサイト

では、ノードやエッジで表現したグラフ(つながり)を分析してどうなるのか?
そして、デジタルマーケティングでどのように活かすことができるのか?

理論などよりも、このことを私たちは最も知りたいはずです。
一般的に言われていることは、以下。

  • コミュニティにおける重要人物(キーマン)の抽出
  • 協業関係にある企業・人物の抽出
  • 路線図から最短経路の抽出

コロナの感染経路をネットワーク分析で抽出できるのもかもしれませんね。
とにかく、つながりさえあれば何でも分析対象となりえるのでしょう。

以上、ネットワーク分析について解説してきました。
専門的なことが知りたい場合は、Googleで検索してみることをおススメします。
さらに、興味を持てば書籍などを読むのもアリでしょう。

次に、ネットワークス分析をPythonで実現する方法を見ていきましょう。

ネットワーク分析ライブラリNetworkX

NetworkXは、Pythonでネットワーク分析を行うためのライブラリです。

NetworkX公式サイト
https://networkx.org/

公式サイトでは、NetworkXを以下のようの説明しています。

NetworkXは、複雑なネットワークの構造、ダイナミクス、機能を作成、操作、研究するためのPythonパッケージです。

ノードは、以下のモノで表現可能。

  • テキスト
  • 画像
  • XML

エッジには、重み、時系列の情報を持たせることが可能です。
また、多くの標準的なグラフアルゴリズムにも対応済ということです。

つまり、拡張性もあり汎用的に使えるということですね。
Pythonで動くこともアピールとして記載されています。

以上が、NetworkXに関する説明です。
次に、このNetworkXを動かす環境面について確認しましょう。

NetworkXのシステム要件

NetworkXの最新バージョンは、2.5となります。

この最新バージョンは、2020年8月22日にリリースされています。
サポートOSに関しては、以下を含むクロスプラットフォーム対応です。

  • Windows
  • macOS
  • Linux

つまり、Pythonが動けばどのOSでもOKということですね。
ただし、Pythonのバージョンには注意が必要となります。

  • Python 3.6
  • Python 3.7
  • Python 3.8

上記が、最新バージョン2.5でサポートしているPythonのバージョンです。
結構狭い範囲ですね。

インストールするPythonのバージョンは、次のコマンドで確認します。

>python -V
Python 3.8.6

サポート対象なのでOKです。

以上、NetworkXのシステム要件でした。
では、NetworkXをインストールしていきましょう。

NetworkXのインストール

最初に、現状のインストール済みパッケージを確認しておきます。

>pip list
Package    Version
---------- -------
pip        21.0.1
setuptools 52.0.0

次にするべきことは、pip自体の更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。

python -m pip install --upgrade pip

では、NetworkXのインストールです。
NetworkXのインストールは、以下のコマンドとなります。

pip install networkx

インストールは、すぐに終わります。
では、どんなパッケージがインストールされたのかを確認しましょう。

>pip list
Package    Version
---------- -------
decorator  4.4.2
networkx   2.5
pip        21.0.1
setuptools 52.0.0

networkxは、最新版がインストールされています。
あと、decoratorというパッケージがインストールされています。

最後に、NetworkXの動作確認を行いましょう。

NetworkXの動作確認

NetworkXの動作確認には、グラフが必要です。
グラフで表示しないと、何が何だかわかりません。

ただ、NetworkX単体ではグラフを表示できません。
グラフを表示するために、Matplotlibの力を借りましょう。

インストールしていないなら、次のコマンドでインストールしておいてください。

pip install matplotlib

Matplotlibがインストールされている前提として、以下のプログラム動かしてください。
コメントを見れば、プログラムの意味はわかるはずです。

import networkx as nx
import matplotlib.pyplot as plt

# グラフ作成
G = nx.Graph()

# ノード追加
G.add_node(1)

# ノード追加(複数)
G.add_nodes_from([2, 3])

# エッジ追加
G.add_edge(1, 2)
e = (2, 3)
G.add_edge(*e)  # unpack edge tuple*

# エッジ追加(複数)
G.add_edges_from([(1, 4), (1, 5)])

# グラフ出力
fig = plt.figure()
pos = nx.circular_layout(G)
nx.draw_networkx(G, pos)
plt.axis("off")
fig.savefig("test.png")

上記プログラムを実行すれば、次のような画像(test.png)が作成されます。

作成されれば、NetworkXの動作確認は完了です。
今後は、今回インストールしたNetworkXをもとにネットワーク分析を実践していきましょう。

何事も実践あるのみです。
実践して、試行錯誤を重ねる中で血となり肉となっていきます。

本ブログでも、ネットワーク分析を実践した際には記事にする予定です。

タイトルとURLをコピーしました