728x90

 이전 pm4py로 alpha miner, inductive miner를 활용하여 페트리 넷을 도출하는 포스팅에서는 아무것도 표시되지 않은 페트리 넷을 도출했다. 이번 포스팅에서는 pm4py로 페트리 넷 위에 frequency, performance 정보를 어떻게 표시하는지에 대해 알아보겠다. 

* 이번 포스팅은 pm4py로 아무 표시가 없는 페트리 넷을 도출하는 방법을 안다는 가정하에 진행된다. 모른다면 아래 포스팅을 참고하도록 하자.

2019/07/28 - [Tools/pm4py] - PM4Py로 프로세스 모델 도출하기 (알파 알고리즘)

 

PM4Py로 프로세스 모델 도출하기 (알파 알고리즘)

데이터를 프로세스 마이닝을 활용하여 분석할 때, 가장 먼저 하는 일은 프로세스 모델 도출일 것이다. (물론 데이터 전처리가 되었다는 가정 하에) 이번 포스팅에서는 pm4py에서 알파 알고리즘을 이용하여 프로세..

process-mining.tistory.com

아무 정보가 표시되지 않은 페트리 넷을 도출할 때에는 다음과 같은 코드로 페트리 넷을 도출할 수 있다.

import os
from pm4py.objects.log.importer.xes import factory as xes_importer
from pm4py.algo.discovery.alpha import factory as alpha_miner
from pm4py.visualization.petrinet import factory as vis_factory


log = xes_importer.import_log(os.path.join("tests","input_data","running-example.xes")) #괄호 안에 원하는 파일의 경로를 쓴다.

net, initial_marking, final_marking = alpha_miner.apply(log) #log로부터 페트리 넷을 도출한다.

gviz = vis_factory.apply(net, initial_marking, final_marking)
vis_factory.view(gviz) #페트리 넷을 visualization

페트리 넷에 정보를 표시하고 싶다면, 아래 코드와 같이 vis_factory.apply 안에 log 인수와 variant 인수를 추가해주어야 한다. variant에는 두 종류가 있다. Frequency와 Performance가 그것이다. Frequency는 빈도 정보를 표시하고 싶을 때, Performance는 수행 시간 정보를 표시하고 싶을 때 선택한다. 

import os
from pm4py.objects.log.importer.xes import factory as xes_importer
from pm4py.algo.discovery.alpha import factory as alpha_miner
from pm4py.visualization.petrinet import factory as vis_factory


log = xes_importer.import_log(os.path.join("tests","input_data","running-example.xes")) #괄호 안에 원하는 파일의 경로를 쓴다.

net, initial_marking, final_marking = alpha_miner.apply(log)

gviz = vis_factory.apply(net, initial_marking, final_marking, log = log, variant ="frequency") #or variant = "performance"
vis_factory.view(gviz)

 위 코드를 수행하면 frequency가 표시된 페트리 넷이 도출된다.

frequency가 표시된 페트리 넷. 빈도가 높을수록 트랜지션은 푸른 색으로, arc는 굵게 표시된다.

 위에서도 언급했듯이, 수행 시간 정보를 표시하고 싶으면 아래 코드와 같이 variant를 performance로 바꿔주면 된다.

import os
from pm4py.objects.log.importer.xes import factory as xes_importer
from pm4py.algo.discovery.alpha import factory as alpha_miner
from pm4py.visualization.petrinet import factory as vis_factory


log = xes_importer.import_log(os.path.join("tests","input_data","running-example.xes")) #괄호 안에 원하는 파일의 경로를 쓴다.

net, initial_marking, final_marking = alpha_miner.apply(log)

gviz = vis_factory.apply(net, initial_marking, final_marking, variant ='performance', log = log)
vis_factory.view(gviz)

 그 결과는 다음과 같다.

수행 시간 정보(performance)가 표시된 페트리 넷.

 PM4py를 이용해서 단순한 페트리 넷 뿐만 아니라 빈도 정보, 수행 시간 정보가 표시된 페트리 넷도 도출할 수 있다. 

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