Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Python neo4j cytoscapejsでデータ可視化入門

1,717 views

Published on

Shizuoka.py #5の発表資料です。Webアプリケーションとしての探索的可視化についての自分の考え方と、実際に実装したサンプルツールを紹介しています。

Published in: Data & Analytics
  • Be the first to comment

Python neo4j cytoscapejsでデータ可視化入門

  1. 1. Python, neo4j, Cytoscape.jsで データ可視化入門 Shizuoka.py #5 オオイシ
  2. 2. 可視化はどんな時に有効なのか? http://qiita.com/keiono/items/387e71fe7e64e32cb948 keionoさんのVIZBIレポートより 計算機ベースの可視化が最も有効なのは、 その作業が探索的な場合である。 探索的=データが何を意味しているのか、ユーザ自身 が何を導きだそうかはっきりしない場合など。
  3. 3. 紙ベースの可視化は解析結果を発表 するときに有効……とも。 自分はデータセットの意味(統計的な意味)を理解して もらう「伝える可視化」と詳細な解析など次のアクショ ンの入り口になる「探索的な可視化」、デジタルでも両 者を可視化の重要な役割として意識しています…。 http://qiita.com/keiono/items/387e71fe7e64e32cb948 keionoさんのVIZBIレポートより
  4. 4. • プロパティの変化に伴うダイアグラムの視覚的な変 化をインタラクティブに体験してもらう。 • 異なる状態・条件の間のダイアグラムの差異を比較 してもらう。 • 可視化によって顕在化した解析等の次のプロセスに バドンを渡せるようなインターフェース。 aoe.dbcls.jp 例えば このようなツールのデザインが探索的可視化アプリケーションにとって有効で、 ユーザに求められているのではないかとおもいます。 探索的な可視化のデザイン
  5. 5. Python + javascriptは、 探索的な可視化ツールを実装できる とっても良いスキルセット。 なのでは。
  6. 6. 身近なデータを使って可視化ツールの実装例を見てみま しょう。今回はTwitterのつぶやきのデータからユーザ間 の類似度を計算し可視化してみます。
  7. 7. Juice=Juice ♪ハロープロジェクトのアイドルグループ ♪歌がかなり上手い ♪ここ20年くらいのアイドルグループのなかでは一番上手いかも ♪人気・知名度、あまり高く無い ♪音楽好きな身として、大変心を痛めています Juice=Juiceファンの音楽的な嗜好をグラフ化し、潜在 的なファン層について考察してみましょう
  8. 8. 1. 対象はJuice=Juiceを#nowplayingしたことのある Twitterアカウント 2. #nowplayingしたアーティストの比率でユーザの cos類似度を計算しています。 3. 算出したユーザの類似度はグラフとしてグラフ DBのneo4jにインポートしています。 4. neo4jに保存されたグラフをPythonから取得し、 Cytoscape.jsで可視化しています。 今回の可視化の大まかな特長
  9. 9. neo4jに取り込んだグラフ
  10. 10. Pythonからneo4jのrest clientのサイファークエリ を叩いてグラフを取得し、jsonに変換。 relationのプロパティ”weight”で類似度をフィルタ ーできるようにしています。
  11. 11. Cytoscape.js http://js.cytoscape.org neo4j https://neo4j.com
  12. 12. LOAD CSV WITH HEADERS FROM “file:///Users/<local data path>/nodes.csv" AS csvLine CREATE (n:User {id: csvLine.id, name: csvLine.name}); neo4jのcommand line tool、またはwebクライアントで実行する nodeのインポート edgeのインポート LOAD CSV WITH HEADERS FROM "file:///Users/<local data path>/edges.csv" AS csvLine MATCH (m:User), (n:User) WHERE m.name=csvLine.start AND n.name=csvLine.end CREATE (m)- [r:SIMILAR_TO {weight: toFloat(csvLine.weight)}]->(n);
  13. 13. Cypher
  14. 14. デモ ※データの概況 収集した期間:2015-04-21~2015-05-27 収集した#nowplyaingを含むtweet:8,758,992 内Juice=Juiceの#nowplaying数:6420 Juice=Juiceについて#nowplayingしたアカウント:829 上記アカウントによるtweet:627,402
  15. 15. PythonとJavaScriptをつかった可視化、楽しそうです よね? 今回の発表で、可視化ツールがどのような目的の時に どのように実装したら有効であるか、自分なりの印象 をお伝えできていたら幸いです。

×