-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
130 lines (107 loc) · 4.5 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
#################################################################
#
# MODULE TO MANAGE WORKERS INPUTS/OUTPUTS
#
# INPUT PIPELINE: INPUT > PRE_PROCESING > MAIN > WORKERS
# OUTPUT PIPELINE: WORKERS > MAIN > POST-PROCESING > OUTPUT
#
#################################################################
#################################################################
# CUSTOM MODULES IMPORTS
#################################################################
import pre_processing
import post_processing
import input_module
import output_module
import main_process
from store_module import save_to_influxdb
#################################################################
# PYTHON IMPORTS
#################################################################
import os
import glob
import sys
#################################################################
#################################################################
from matplotlib import pyplot as plt
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
from sklearn.metrics import roc_auc_score
def evaluate(Y, Y_pred):
roc_auc = roc_auc_score(Y, Y_pred)
print(f'ROC: {roc_auc}')
# Compute confusion matrix
cm = confusion_matrix(Y, Y_pred)
disp = ConfusionMatrixDisplay(confusion_matrix=cm)
disp.plot()
plt.show()
return roc_auc
def run(mode='basic'):
if mode == 'basic':
#################################################################
# GET DATA DATAFRAMES
#################################################################
df = pre_processing.basic_clean(input_module.vicomtech_data())
X = df.iloc[:, :-1]
Y = df.iloc[:, -1]
#################################################################
# SELECT AND RUN WORKERS
#################################################################
# Get a list of all Python files in the directory
sys.path.insert(0, 'workers')
python_files = glob.glob(os.path.join('workers', '*.py'))
# Import all Python files and run modules
results = {}
for py_file in python_files:
print(f'Running {py_file}')
module_name = os.path.splitext(os.path.basename(py_file))[0]
module = __import__(module_name)
results[module_name] = module.run(X, Y)
print("Processing results...")
#################################################################
# PROCESS AND OUTPUT RESULTS
#################################################################
# TODO CREATE PROCESS RESULTS FUNCTION
output = main_process.process_results(results)
# Upload data to database
save_to_influxdb(X, output)
if output_module.print_output(post_processing.basic_post_processing(output)) == 0:
print('Success')
roc_auc = evaluate(Y, output)
return roc_auc
if mode == 'test':
#################################################################
# GET DATA DATAFRAMES
#################################################################
df = pre_processing.basic_clean(input_module.vicomtech_data())
X = df.iloc[:, :-1]
Y = df.iloc[:, -1]
#################################################################
# SELECT AND RUN WORKERS
#################################################################
# Get a list of all Python files in the directory
sys.path.insert(0, 'workers')
python_files = glob.glob(os.path.join('workers', '*.py'))
# Import all Python files and run modules
results = {}
for py_file in python_files:
print(f'Running {py_file}')
module_name = os.path.splitext(os.path.basename(py_file))[0]
module = __import__(module_name)
results[module_name] = module.run(X, Y)
print("Processing results...")
#################################################################
# PROCESS AND OUTPUT RESULTS
#################################################################
# TODO CREATE PROCESS RESULTS FUNCTION
output = main_process.process_results(results)
# Upload data to database
save_to_influxdb(X, output)
if output_module.print_output(post_processing.basic_post_processing(output)) == 0:
# print('Success')
pass
roc_auc = evaluate(Y, output)
return roc_auc
if __name__ == "__main__":
run()
print("Finished")
sys.exit(0)