この記事を読むのに必要な時間は約 3 分です。
共起ネットワークとは?
ノード間の共通性をネットワークを用いて図示する方法のことを共起ネットワークと言います。
簡単に言うと、単語や商品ごとの繋がりをかっこよく視覚的に捉える手法です。
今回は、手元にある店舗に置けるレシートデータが集められたと仮定し、
ある商品との併売状況を共起ネットワークで可視化したいと思います。
環境
Google Colab
分析に使用するデータはcsvでもなんでも構いません、今回はBigQueryにレシートデータが揃っている前提でお話を進めます。
※以降のコードは全てGoogle Colab上で実行しています。
手順
Colabで日本語表示を設定
!apt-get -y install fonts-ipafont-gothic
!pip install japanize_matplotlib
!rm /root/.cache/matplotlib/fontlist-v300.json
分析用データの準備
上記のようなおまじないを実行すればGoogle ColabとBigQueryは接続完了です。簡単ですね。
project_idには、ご自身のGCPのプロジェクトIDを入れてください。
BigQueryからデータを集計してColab上に出力します。
前処理の内容は元データによって様々ですので割愛しています。
下の図表のような感じでDataFrameが出力できればOKです。
共起ネットワークの場合、「出現割合」のカラムではJaccard係数、Dice係数などが主に使われています。
共起ネットワークの構築と出力
matplotlibとグラフ・ネットワークを扱うPythonライブラリーのNetworkXをインポートします。
ここでのポイントは、networkxライブラリのfrom_pandas_edgelistというメソッドを使っていることです。
PandasのDataFrameからかんたんに共起ネットワークが構築できます。
引数にあるdfは前もって準備した分析データ(DataFrame)のことです。
最後に各ノードとエッジの大きさやカラーリングなどを調整して出力すれば完了です。
出力結果はこちらです。
上記のコードのように、draw_networkx_edgesのwidth引数を工夫することで、ノード間の関連度の高さに応じてエッジの太さを変更することも可能です。

共起ネットワーク