초보자도 Python을 사용하여 쉽게 그래프 분석을하고 싶다! !

소개



파이썬에서 데이터 분석을 수행 할 때 Networkx과 같은 모듈을 사용하여 그래프를 분석 할 수있는 기회가 증가했습니다. 그러나 관계형 데이터베이스 (이하 RDB)에서 데이터를 추출하는 작업이 번거롭고 좀처럼 사용하기 쉽지 않다고 느낍니다. 그래서 RDB를 사용해 효율적으로 그래프 분석을 할 수 있는 프레임워크 GraphGen이 있었으므로, 나의 이해도 깊게 하기 위해서 소개하고 싶습니다.

장점



지금까지 그래프 분석을 수행하기 위해 먼저 RDB에서 데이터를 추출하여 데이터를 잘 성형 한 후 모듈을 사용하여 그래프 분석을 수행해야했습니다.

그러나 GraphGen을 사용하면 몇 줄로 그래프 분석을 할 수 있습니다.

examples/python-dblp.py
from graphgenpy import GraphGenerator
import networkx as nx

datalogQuery= """
Nodes(ID, Name) :- Author(ID, Name)
Edges(ID1, ID2) :- AuthorPublication_new(ID1, PubID), AuthorPublication(ID2, PubID)
"""

gg = GraphGenerator("database_name", "localhost", "5432", "user_name", "password")
fname = gg.generateGraph(datalogQuery, "extracted_graph", GraphGenerator.GML)
G = nx.read_gml(fname, 'id')
print(nx.pagerank(G))

이것만으로 Networkx를 사용할 수있게되는 것은 매우 편리하네요!

운영 환경



GraphGen에서 RDB는 Postgresql을 권장했기 때문에 Postgresql을 사용합니다.

GraphGen에서는
- Postgresql ver 9.6
- Python2
- Networkx1

를 추천했습니다. 그러나 다음 환경에서도 사용할 수 있었으므로 이것을 전제로 소개합니다.
  • Postgresql ver 9.6
  • Python3.6
  • Networkx2.3

  • 환경설정



    RDB를 Python 설정으로 연결하는 방법을 설명합니다.
    그럼에도 불구하고 Postgresql 데이터베이스 이름, 사용자 이름 및 암호를 입력하면됩니다.
    gg = GraphGenerator("database_name", "localhost", "5432", "user_name", "password")
    

    그래프 생성 방법



    그래프를 생성하는 방법을 설명합니다.
    예를 들어, DBLP라는 논문 데이터베이스의 데이터에 대해 그래프를 생성하고 싶습니다.
    공저 관계를 분석하고 싶다면 AuthorPulication의 aid와 pid를 보면 가능합니다.


    그런 다음 Prolog라는 SQL과 유사한 언어를 사용하여 다음과 같이 작성할 수 있습니다.

    examples/python-dblp.py
    datalogQuery = """
      Node(ID, Name) :- Author(ID, name)
      Edges(ID1, ID2) :- AuthorPublication(ID, PubID), AuthorPuilcation(ID2, PubID)
    """
    

    이렇게 작성하면 그래프를 쉽게 생성 할 수 있습니다.

    좀 더 복잡한 작업을 원한다면 GraphGen을 참조하십시오.

    요약



    Python을 사용하여 그래프 분석을 효율적으로 수행하기위한 모듈을 소개했습니다. 앞으로 분석을 편리하게 하는 프레임워크를 더 소개할 수 있으면 좋겠습니다.

    참고문헌



    Xirogiannopoulos, K.Srinivas and A.Deshpande(2017). GraphGen: Adaptive Graph Processing Using Relational Databases, in Proceedings of the Fifth International Workshop on Graph Data management Experiences & Systems, 1-7.

    좋은 웹페이지 즐겨찾기