728x90

 이번 포스팅에서는 PM4Py로 DFG를 도출하는 방법에 대해 알아보겠다. DFG가 무엇인지 모른다면 다음 포스팅을 참고하도록 한다.

2019/06/21 - [Theory/Process Model] - DFG(Directly Followed Graph)란?

 

DFG(Directly Followed Graph)란?

Directly Followed Graph란, 각 액티비티 간의 directly follow 관계 (a->b)만을나타낸 그래프를 말한다. 이는 가장 널리 쓰이는 Process Discovery 방식 중 하나인 Inductive Miner를 사용할 때에 기본이 된다...

process-mining.tistory.com

 *본 포스팅은 기본적인 python 문법을 알고 있다는 가정 하에 진행된다.

 

1. 우선, xes 파일을 import하여 이를 log에 저장해 준다.

 

import os
from pm4py.objects.log.importer.xes import factory as xes_importer

log = xes_importer.import_log(os.path.join("tests","input_data","running-example.xes")) #원하는 파일의 경로를 여기에 입력한다.

2. 이 log에 대해 DFG를 찾아 준다.

from pm4py.algo.discovery.dfg import factory as dfg_factory

dfg = dfg_factory.apply(log)

3. 이를 눈으로 확인하기 위해(visualization) 다음 코드를 입력한다.

from pm4py.visualization.dfg import factory as dfg_vis_factory

gviz = dfg_vis_factory.apply(dfg, log=log, variant="frequency")
dfg_vis_factory.view(gviz)

여기서, variant를 frequency로 설정하였기 때문에 DFG의 각 액티비티와 arc 위에 빈도(frequency)가 표시된다.  Frequency가 아닌 소요 시간을 보고 싶다면 variant = "performance"로 바꿔 주면 된다.

from pm4py.visualization.dfg import factory as dfg_vis_factory

gviz = dfg_vis_factory.apply(dfg, log=log, variant="performance")
dfg_vis_factory.view(gviz)

 

*이 코드를 한 번에 입력하고 싶으면 다음 코드를 입력하면 된다. (순서대로 붙여넣기 해도 되지만, 보기 좋게 바꾸어 놓았다.)

import os
from pm4py.objects.log.importer.xes import factory as xes_importer
from pm4py.algo.discovery.dfg import factory as dfg_factory
from pm4py.visualization.dfg import factory as dfg_vis_factory

log = xes_importer.import_log(os.path.join("tests","input_data","running-example.xes"))
dfg = dfg_factory.apply(log)

gviz = dfg_vis_factory.apply(dfg, log=log, variant="frequency") #or variant = "performance"
dfg_vis_factory.view(gviz)

4. 다음과 같은 맵이 도출된다면 성공이다.

variant = frequency인 DFG. 빈도가 높을수록 액티비티는 푸른색으로, arc는 굵게 표시된다.
variant = performance인 DFG

 

pm4py를 통해 코드 몇 줄로 간단하게 event log로부터 DFG를 도출할 수 있다.

300x250
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기