Граф процесс в тринадцать строчек

Экспертный анализ процесса – очень дорогая компания. Требуется много ресурсов и времени. Но есть автоматизированные способы, которые может применить любой.

Когда бизнес только начинает свой путь. Процессы его свежи и понятны всем участникам, включая менеджмент. С течением времени бизнес начинает расти и как следствие – начинают расти процессы внутри него. Такая деформация, от эталонного состояния, просто необходима, чтобы соответствовать потребностям бизнеса. Как только процесс разрастается вертикально и горизонтально – им становится тяжелее управлять. Анализ бизнес-процессов всегда трудоемкая работа, обремененная такими факторами как:

  1. Плохо структурированные данные
  2. Непонимание реального процесса
  3. Отсутствие должных it компетенций для работы с данными

Зачастую, этим заняты глубокопогруженные в процесс аналитики, затрачивая на это много времени. Современные инструменты способны облегчить им работу и обеспечить надежность выводов. Одним из таких инструментов является набор алгоритмов Process Mining. Направление, имеющее некоторую популярность в кругах аналитиков, реализовано на различных платформах. В этой статье мы рассмотрим, как просто построить граф процесса на python, используя библиотеку pm4py.

Предполагается, что на Вашем устройстве уже установлено соответствующее виртуальное окружение. О том, как это сделать, можете прочитать тут.

В первую очередь необходимо из данных извлечь три составляющие:

  • case:concept:name. Порядковый номер одного экземпляра Вашего процесса.
  • time:timestamp. Время и дата события в формате timestamp.
  • concept:name. Id события в рамках одного кейса.

Пример будет выглядеть примерно так:

# Импортируем пакет pandas import pandas as pd # Загружаем лог pData = pd.read_csv('test_2012.csv', sep=';') # Визуализируем первые пять строк файла pData.head()

Вам нужно перевести дату и время в формат timestamp что бы получилось примерно следующее.

Далее необходимо преобразовать дату:

# Преобразование поля time:timestamp из строки в datetime pData['time:timestamp'] = pd.to_datetime(pData['time:timestamp']) # Преобразование поля time:timestamp в timestamp float pData['time:timestamp'] = pData['time:timestamp'].astype(np.int64) // 10**9 # Преобразование поля time:timestamp в int pData['time:timestamp'] = pData['time:timestamp'].astype(np.int) pData.head()

После преобразований таблица должна выглядеть следующим образом:

Следующим шагом необходимо отсортировать Ваши данные по времени. Это необходимо для корректной работы алгоритмов. Если в Ваши логи не отсортированы, сделать это можно так:

pData.sort_values('time:timestamp')

Теперь данные готовы для подачи в пакет pm4py.

from pm4py.objects.conversion.log import factory as log_conv log = log_conv.apply(pData)

После того как лог сформирован – можно переходить к формированию графа процесса. Ниже будет приведен пример эвристического майнера. Полый список и описание алгоритмов можете посмотреть тут.

from pm4py.algo.discovery.heuristics import factory as heuristics_miner heu_net = heuristics_miner.apply_heu(log)

После формирования графа, последнее что остается – визуализировать его. Для этого нам потребуется утилита GraphViz.

from pm4py.visualization.heuristics_net import factory as hn_vis_factory gviz = hn_vis_factory.apply(heu_net) hn_vis_factory.view(gviz)

Вот и все. Граф готов.

0
Комментарии
-3 комментариев
Раскрывать всегда