ネットワーク分析までやろう
少しずつネットワークの可視化ができるようになったので分析までやってみようと思います。本来はそれが目的なのですが・・・。
引き続き、オーム社『Pythonで学ぶネットワーク分析 ColaboratoryとNetworkXを使った実践入門』を参考に、まずは簡単な中心性の計算をやってみようと思います。
使用するデータ
本のサンプルで使用している「レ・ミゼラブルの人物ネットワーク」でもよいのですが、私にとってはまだ難しい。簡単でわかりやすく、面白いデータはにないかと探してみました。
またもゲームネタですが、YouTubeを見ていて思い出したRPGゲーム『サガフロンティア』から題材を集めした。ゲームの詳細は省きますが、どの登場人物がパーティーを組めるかというものを可視化します。
なお、データはこちらのサイトのものを利用させていただきました。
NetworkXでやってみる
CSVファイルを作成し、まずは可視化してみました。主人公として選択できるキャラには色をつけ、関数によって次数中心性の計算を行い、その値をノードの大きさとしました。
もちろん、次数(何人と繋がっているか)も関数ですぐに算出できます。例えばブルーは19、リュートは24など。
ここで失敗?に気づきました。このネットワークには方向を設定していないため、どちらかが仲間に出来ればノードが発生します。それにより、元データよりノードが増えてしまっています。例えば、ブルーはリュートを仲間にできますが、リュートはブルーを仲間に出来ません。しかし、片方が成立していればノードは作成されます。今回は練習なのでそのまま進めます。
関数をつかって算出された平均次数は6.8947でした。
Gephiでやってみる
同じデータを使用してGephiでも表現してみました。
こちらの方が綺麗だと思います。同じように平均次数を計算してみると、6.895なのでNetworkXの計算と一致しました。
まとめ
NetworkXとGephiを使って中心性の計算を行ってみました。有向と無向の選択は失敗しましたが、中心性の計算はOKということで。だんだんとネットワークというものがわかってきた?と思います。