Added script to check on process models for case clusters; not sure this makes sense

This commit is contained in:
Nora Wickelmaier 2024-03-10 17:50:09 +01:00
parent b29790dfc1
commit 7eff903837

View File

@ -0,0 +1,45 @@
# 12_pm-case-clusters.py
#
# content: (1) Load data and create event log
# (2) Infos for clusters
# (3) Process maps for clusters
#
# input: results/haum/eventlogs_pre-corona_item-clusters.csv
# output: results/haum/pn_infos_clusters.csv
#
# last mod: 2024-03-06
import pm4py
import pandas as pd
from python_helpers import eval_pm, pn_infos
#--------------- (1) Load data and create event logs ---------------
dat = pd.read_csv("results/haum/eventlogs_2019_case-clusters.csv", sep = ";")
event_log = pm4py.format_dataframe(dat, case_id = "case", activity_key = "item",
timestamp_key = "date.start")
#--------------- (2) Infos for clusters ---------------
# Merge clusters into data frame
eval = pd.DataFrame(columns = ["fitness", "precision", "generalizability",
"simplicity", "sound", "narcs", "ntrans",
"nplaces", "nvariants", "mostfreq"])
for cluster in event_log.cluster.unique().tolist():
eval = pd.concat([eval, pn_infos(event_log, "cluster", cluster)])
eval = eval.sort_index()
eval.to_csv("results/haum/pn_infos_clusters.csv", sep = ";")
#--------------- (3) Process maps for clusters ---------------
for cluster in event_log.cluster.unique().tolist():
subdata = event_log[event_log.cluster == cluster]
subnet, subim, subfm = pm4py.discover_petri_net_inductive(subdata, noise_threshold=.3)
pm4py.save_vis_petri_net(subnet, subim, subfm,
"results/processmaps/petrinet_cluster" + str(cluster) + "_cases.png")
bpmn = pm4py.convert.convert_to_bpmn(subnet, subim, subfm)
pm4py.vis.save_vis_bpmn(bpmn, "results/processmaps/bpmn_cluster" +
str(cluster) + "_cases.png")