-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMain.py
152 lines (143 loc) · 6.72 KB
/
Main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
from State_Transition_Matrix_Class import State_Transition_Matrix
from DFA_Class import DFA
from UseCaseAnalyser_Class import BPIUseCaseAnalyser, ABCUseCaseAnalyser, BPI19UseCaseAnalyser, MateUseCaseAnalyser, \
AutoUseCaseAnalyser
from Tester_Class import Tester
import datetime
import cProfile
def main():
""" BPI11 use case"""
# TODO something is wrong with this use case. if unambiguity is 2, the percentage per row is not 1.
# probably due to not taking all event types and thus missing state transitions
# data_path = 'data/hospital_log.csv'
# pred_path = 'results/bpi11.csv'
# analyser = BPIUseCaseAnalyser()
# dfa = analyser.get_dfa()
# print("Starting unambiguity 1")
# dfa.increase_unambiguity(1)
# Tester.test_correct_dfa_bpi11(dfa)
# # print("Starting unambiguity 2")
# # dfa.increase_unambiguity(2)
# # Tester.test_correct_dfa_bpi11(dfa)
#
# analyser.train_matrix(dfa, data_path, 75000)
# Tester.test_correct_trained_matrix_bpi11(analyser.trained_matrix)
# threshold = 0.5
# max_distance = 4
# analyser.predict_matrix(dfa, data_path, 1, 10000, pred_path, max_distance, threshold)
# p = analyser.get_precision(data_path, pred_path, 1, 200, max_distance)
# print(p)
""" ABC use case for testing """
# threshold = 0.9
# max_distance = 50
# mate_analyser = ABCUseCaseAnalyser()
# dfa = mate_analyser.get_dfa()
# print("Starting unambiguity 1")
# dfa.increase_unambiguity_to_1()
# Tester.test_unambiguous(dfa)
# mate_analyser.train_matrix(dfa, 'data/abc_fixed.csv', 999, max_distance, False)
# Tester.test_correct_trained_matrix_abc(mate_analyser.trained_matrix)
# print("Starting prediction")
# start = datetime.datetime.now()
# mate_analyser.predict_matrix(dfa, 'data/abc_fixed.csv', 0, 100, 'results/abc.csv', max_distance, threshold)
# duration = datetime.datetime.now() - start
# print("Prediction Order 1: " + str(duration))
# Tester.test_correct_prediction_abc(mate_analyser)
# p = mate_analyser.get_precision('data/abc_fixed.csv', 'results/abc.csv', 0, 0, 100, max_distance)
# print(p)
#
# dfa.increase_unambiguity(2)
# Tester.test_unambiguous(dfa)
# mate_analyser.train_matrix(dfa, 'data/abc_fixed.csv', 999, max_distance, False)
# print("Starting prediction")
# start = datetime.datetime.now()
# mate_analyser.predict_matrix(dfa, 'data/abc_fixed.csv', 0, 100, 'results/abc.csv', max_distance, threshold)
# duration = datetime.datetime.now() - start
# print("Prediction Order 2: " + str(duration))
# p = mate_analyser.get_precision('data/abc_fixed.csv', 'results/abc.csv', 0, 0, 100, max_distance)
# print(p)
#
# dfa.increase_unambiguity(3)
# Tester.test_unambiguous(dfa)
# mate_analyser.train_matrix(dfa, 'data/abc_fixed.csv', 999, max_distance, False)
# print("Starting prediction")
# start = datetime.datetime.now()
# mate_analyser.predict_matrix(dfa, 'data/abc_fixed.csv', 0, 100, 'results/abc.csv', max_distance, threshold)
# duration = datetime.datetime.now() - start
# print("Prediction Order 3: " + str(duration))
# p = mate_analyser.get_precision('data/abc_fixed.csv', 'results/abc.csv', 0, 0, 100, max_distance)
# print(p)
""" BPI19 use case """
# auto_analyser = BPI19UseCaseAnalyser()
# dfa_auto = auto_analyser.get_dfa()
#
# threshold = 0.8
# max_distance = 4
# dfa_auto.increase_unambiguity(1)
# Tester.test_unambiguous(dfa_auto)
# # dfa_bpi19.increase_unambiguity(2) # TODO takes ages!
# print("Starting training")
# auto_analyser.train_matrix(dfa_auto, 'data/bpi19.csv', 1000, max_distance, True)
# Tester.test_correct_trained_matrix_bpi19(auto_analyser.trained_matrix)
# print("Starting prediction")
# auto_analyser.predict_matrix(dfa_auto, 'data/bpi19.csv', 1, 200, 'results/bpi19.csv', max_distance, threshold)
# precision = auto_analyser.get_precision('data/bpi19.csv', 'results/bpi19.csv', 1, 0, 199, max_distance)
# print(precision)
""" Mate use case """
# threshold = 0.8
# max_distance = 10
# mate_analyser = MateUseCaseAnalyser()
# dfa = mate_analyser.get_dfa()
# print("Starting unambiguity 1")
# dfa.increase_unambiguity(1)
# print(dfa.state_transition_matrix.matrix)
# mate_analyser.train_matrix(dfa, 'data/mate.csv', 99999, max_distance, False)
# print("Starting prediction")
# start = datetime.datetime.now()
# mate_analyser.predict_matrix(dfa, 'data/mate.csv', 0, 1000, 'results/mate.csv', max_distance, threshold)
# duration = datetime.datetime.now() - start
# print("Prediction Order 1: " + str(duration))
# p = mate_analyser.get_precision('data/mate.csv', 'results/mate.csv', 0, 0, 1000, max_distance)
# print(p)
#
# print("Starting unambiguity 2")
# dfa.increase_unambiguity(2)
# print(dfa.state_transition_matrix.matrix)
# mate_analyser.train_matrix(dfa, 'data/mate.csv', 999, max_distance, False)
# print("Starting prediction")
# start = datetime.datetime.now()
# mate_analyser.predict_matrix(dfa, 'data/mate.csv', 0, 100, 'results/mate2.csv', max_distance, threshold)
# duration = datetime.datetime.now() - start
# print("Prediction Order 2: " + str(duration))
# p = mate_analyser.get_precision('data/mate.csv', 'results/mate2.csv', 0, 0, 100, max_distance)
# print(p)
#
# print("Starting unambiguity 3")
# dfa.increase_unambiguity(3)
# print(dfa.state_transition_matrix.matrix)
# mate_analyser.train_matrix(dfa, 'data/mate.csv', 999, max_distance, False)
# print("Starting prediction")
# start = datetime.datetime.now()
# mate_analyser.predict_matrix(dfa, 'data/mate.csv', 0, 100, 'results/mate2.csv', max_distance, threshold)
# duration = datetime.datetime.now() - start
# print("Prediction Order 2: " + str(duration))
# p = mate_analyser.get_precision('data/mate.csv', 'results/mate2.csv', 0, 0, 100, max_distance)
# print(p)
""" Auto Use Case """
auto_analyser = AutoUseCaseAnalyser()
dfa_auto = auto_analyser.get_dfa()
threshold = 0.7
max_distance = 10
dfa_auto.increase_unambiguity_to_1()
dfa_auto.increase_unambiguity(2)
# Tester.test_unambiguous(dfa_auto)
print("Starting training")
auto_analyser.train_matrix(dfa_auto, 'data/auto.csv', 1000, max_distance, False, True)
Tester.test_correct_trained_matrix_bpi19(auto_analyser.trained_matrix)
print("Starting prediction")
auto_analyser.predict_matrix(dfa_auto, 'data/auto_one_instance.csv', 0, 8, 'results/auto.csv', max_distance, threshold)
precision = auto_analyser.get_precision('data/auto_one_instance.csv', 'results/auto.csv', 0, 0, 7, max_distance)
print(precision)
# Tester.test_precision()
cProfile.run("main()")
# main()