【pm4py】process mining 读取log生成model/net/tree

news/2025/2/16 5:02:27/

文章目录

  • Ref
  • Quick Start
  • 1. 虚拟环境配置
  • 1. 读取log
    • 1.1 读取XES格式log
      • pm4py.read_xes(log)
      • xes_importer.apply(log)
    • 1.2 读取CSV格式log
  • 2. miner
    • Process model - BPMN
    • Petri net
    • Process tree
  • 3. view
  • 代码

Ref

【pm4py 官网】https://pm4py.fit.fraunhofer.de/
【ProM官网】http://promtools.org/doku.php

Quick Start

A sneak peak of pmp4y’s simple application:

import pm4py
log = pm4py.read_xes('<path-to-xes-log-file.xes>')
process_model = pm4py.discover_bpmn_inductive(log)
pm4py.view_bpmn(process_model)

即读取XES log,基于inductive miner生成bpmn,并进行预览。例如:

在这里插入图片描述
在这里插入图片描述

1. 虚拟环境配置

  • 创建虚拟环境:
virtualenv -p python3.7 ~/venv/processmining
source ~/venv/processminging/bin/activate
  • 安装pm4py:
python3.7 -m pip install pm4py
pip list

pm4py为最新版本2.2.27

在这里插入图片描述

在这里插入图片描述

1. 读取log

可读取XES和CSV格式log:

1.1 读取XES格式log

pm4py.read_xes(log)

import pm4py
log = pm4py.read_xes('tests/input_data/running-example.xes')

此时可查看log,可看出log包含25个eventlog(即ProM中的cases),第一个eventlog包含92个traces(即Prom中第一个case包含92个event),第2个eventlog包含62个traces;这25个eventlog包含的traces数目最大为92,最小为34。

其中第一个eventlog的第一个trace(即ProM中第一个case的第一个event),concept:name为Start,lifecycle:transition为start……
在这里插入图片描述

下图即为ProM软件(【ProM官网】http://promtools.org/doku.php)对同一XES日志文件的读取分析数据,与pm4py相同。

在这里插入图片描述

xes_importer.apply(log)

除了pm4py官网上所显示的pm4py.read_xes('tests/input_data/running-example.xes'),还可以通过converter进行读取:

from pm4py.objects.log.importer.xes import importer as xes_importer
log = xes_importer.apply('<path-to-xes-log-file.xes>')

在这里插入图片描述

1.2 读取CSV格式log

import pandas as pd
import pm4pydataframe = pd.read_csv('tests/input_data/running-example.csv', sep=',')
dataframe = pm4py.format_dataframe(dataframe, case_id='case:concept:name', activity_key='concept:name', timestamp_key='time:timestamp')
event_log = pm4py.convert_to_event_log(dataframe)

要注意的是,表头应与case:concept:name, concept:nametime:timestamp对应;

但是当表格中有起始和终止时间时,未确定读取方法。(可在ProM中读取CSV,再转换为XES格式;然后即可通过1.1的方式读取)

2. miner

Process model - BPMN

process_model = pm4py.discover_bpmn_inductive(log)

在这里插入图片描述

Petri net

petri_net, initial_marking, final_marking = pm4py.discover_petri_net_inductive(log)

Process tree

process_tree = pm4py.discover_process_tree_inductive(log)

在这里插入图片描述

3. view

# BPMN
pm4py.view_bpmn(process_model_bpmn, format="pdf")# Petri net
pm4py.view_petri_net(petri_net)# Process tree
pm4py.view_process_tree(process_tree)

在这里插入图片描述

放大来看:
BPMN:
在这里插入图片描述
Petri net:
在这里插入图片描述

Process tree:
在这里插入图片描述

代码

#!/usr/bin/env python3
# -*- coding: utf-8 -*-# @Time : 8/26/22 4:13 PM
# @Author : 
# @File : processmining.py
# @Version : 
# @Software: PyCharm
# @Description : 'process mining'import pm4py
from pm4py.objects.log.importer.xes import importer as xes_importerdef quick_start():log = pm4py.read_xes('/home/deng/cugb/STL/CSTL/Process/PromEventLog/activitylog_uci_detailed_labour.xes')process_model = pm4py.discover_bpmn_inductive(log)pm4py.view_bpmn(process_model)def read_xes():# read XES log# by pm4py.read_xeslog = pm4py.read_xes('./PromEventLog/activitylog_uci_detailed_labour.xes')# by xes_importer.applylog = xes_importer.apply('./PromEventLog/activitylog_uci_detailed_labour.xes')log = xes_importer.apply('./PromEventLog/PurchasingExample_convertedByProM.xes')return logdef miner(log):# BPMNprocess_model_bpmn = pm4py.discover_bpmn_inductive(log)# Petri netpetri_net, initial_marking, final_marking = pm4py.discover_petri_net_inductive(log)# Process treeprocess_tree = pm4py.discover_process_tree_inductive(log)return process_model_bpmn, petri_net, process_treedef view(process_model_bpmn, petri_net, process_tree):# BPMNpm4py.view_bpmn(process_model_bpmn, format="pdf")pm4py.save_vis_bpmn(process_model_bpmn, 'test.pdf')# Petri netpm4py.view_petri_net(petri_net)# Process treepm4py.view_process_tree(process_tree)if __name__ == '__main__':quick_start()log = read_xes()process_model_bpmn, petri_net, process_tree = miner(log)view(process_model_bpmn, petri_net, process_tree)print('done')

http://www.ppmy.cn/news/514424.html

相关文章

PM4PY - 分析建议怎样的BPMN可以转换成Process Tree

背景 读取手动绘制的BPMN图&#xff0c;欲将其转换成Process Tree&#xff0c;必定经过先将其转换成WF-net。 然而不规范或者逻辑有分歧的BPMN无法转换成唯一的WF-net&#xff0c;也就无法转换成Process Tree。 Process Tree&#xff1a;流程树&#xff0c;简称PT&#xff1b;…

pm4py、graphviz绘图中文乱码问题

最近使用pm4py画流程图&#xff0c;结果是中文乱码&#xff0c;汉字都是“四条”麻将。 pm4py是用graphviz画图的&#xff0c;默认不支持中文的&#xff0c;需要设置中文字体。 解决办法如下&#xff1a; 深入到pydotplus包里找到graphviz.py文件&#xff0c;找到Node类&#x…

pm4py在anaconda环境下的安装

由于研究方向与过程挖掘有关&#xff0c;prom工具是源于JAVA实现的&#xff0c;这里记录一下pm4py&#xff08;process mining for Python&#xff09;资源包如何安装。 首先来到pm4py官网&#xff1a;https://pm4py.fit.fraunhofer.de/ 来到Windows下的安装步骤&#xff1a;h…

PM4PY - 事件过滤的简化接口的使用

log pm4py.filter_end_activities(log, admitted_end_activities) 描述&#xff1a;在提供的列表中过滤具有结束活动的案例。 参数&#xff1a; log &#xff1a;log对象 admitted_end_activities&#xff1a;指定的结束活动列表 返回&#xff1a;过滤后的log对象 log pm4py…

PM4PY - Process Trees

摘要&#xff1a;Process Trees 在PM4PY中&#xff0c;我们为process trees&#xff08;可视化、转换成Petri Net、日志生成&#xff09;提供支持&#xff0c;导入导出&#xff0c;和生成他们的功能。 导入导出Process Trees&#xff08;pt&#xff09; 在PM4PY中&#xff0…

Python使用pm4py库读取xes文件

pm4py官方文档&#xff1a;PM4Py - Process Mining for PythonPM4Py is a process mining package for Python. PM4Py implements the latest, most useful, and extensively tested methods of process mining. The practical handling makes the introduction to the world o…

PM4PY - Filtering Event Data

摘要&#xff1a;过滤EVENT DATA 随笔 trace&#xff1a;路径&#xff0c;表示图上的路径&#xff0c;从头走到尾算一次trace Variant&#xff1a;变体&#xff0c;表示同一类traces&#xff0c;同一种路径为一个Variant case&#xff1a;方案/情况&#xff0c;表示事件日志里…

基于FPGA的快速傅里叶变换加速(三)

基于FPGA的快速傅里叶变换加速&#xff08;三&#xff09; 硬件加速介绍及部分verilog代码实现 1. 硬件加速1.1 FPGA1.1.1 FPGA介绍概念&#xff1a;基本结构&#xff1a;工作原理&#xff1a; 1.1.2 开发板开发板类型开发板介绍 1.2 加速理念1.2.1 硬件加速1.2.2 FFT中的加速&…