LoginSignup
5
6

More than 3 years have passed since last update.

Neo4jをJupyter notebookで実行する

Last updated at Posted at 2019-05-21

はじめに

グラフネットワーク分析用ツールNeo4jをJupyterから実行し、
結果をJupyter notebook上に可視化させる。

実行には、Neo4jboltドライバーを利用する。

本内容のNotebookはこちら


実行環境

CentOS
openJDK 8
python 3.6.6
Jupyter notebook 4.3.0

Neo4j CommunityEdition 3.5.5
Neo4jboltドライバー


準備

インストール

  • Neo4j
    Neo4j をインストール
    DLとインストール方法はこちら

  • Python ライブラリ
    Neo4jboltドライバー をインストール

$ pip install neo4j

Neo4j パラメータ変更

  • ホストOSからアクセス可能にするため、以下のパラメータをコメントアウト
$ vi $NEO4J_HOME/conf/neo4j.conf
# With default configuration Neo4j only accepts local connections.
# To accept non-local connections, uncomment this line:
dbms.connectors.default_listen_address=0.0.0.0
  • bolt ドライバーを利用可能にするために、以下のパラメータをコメントアウト
$ vi $NEO4J_HOME/conf/neo4j.conf
# Bolt connector
dbms.connector.bolt.enabled=true
dbms.connector.bolt.tls_level=OPTIONAL
dbms.connector.bolt.listen_address=:7687

Neo4jを起動

$ $NEO4J_HOME/bin/neo4j start

*初回起動後、以下にアクセスし必要に応じてパスワードを変更
http://localhost:7474


データ

データはmovieのデータを利用


実行

Jupyter notebookから以下の内容を実行

ライブラリのインポート、ドライバーに接続

import pandas as pd
from neo4j  import GraphDatabase, basic_auth
import matplotlib.pyplot as plt
%matplotlib inline

driver = GraphDatabase.driver("bolt://localhost:7687", auth=basic_auth("neo4j", "Welcome1"))

グラフデータの分析、取得

Query = '''CALL algo.betweenness.stream('','',{direction:'both'})
YIELD nodeId, centrality
MATCH (person:Person) WHERE id(person) = nodeId
RETURN person.name, centrality
ORDER BY centrality DESC LIMIT 10'''

session = driver.session()
res = session.run(Query)

col = ['name', 'centrality']
df = pd.DataFrame([r.values() for r in res], columns=col)

session.close()

del session


棒グラフの作成

plt.figure(figsize=(15, 6))
plt.bar(list(range(len(df))), df['centrality'])
plt.xticks(list(range(len(df))), df['name'])

結果

スクリーンショット 2019-05-21 11.07.27.png


5
6
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
5
6