-
Notifications
You must be signed in to change notification settings - Fork 20
/
Copy pathrun_generic_experiment.py
58 lines (52 loc) · 2.11 KB
/
run_generic_experiment.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
import os
import traceback
from datasources.datasource import DatasourceFactory
from experiments.experiments import GenericExperiment
from nilmlab import exp_model_list
from nilmlab.factories import EnvironmentFactory
from nilmlab.lab import TimeSeriesLength
from nilmlab.exp_model_list import CLF_MODELS, TRANSFORMER_MODELS, SAX
from utils.logger import debug
dirname = os.path.dirname(__file__)
dirname = os.path.join(dirname, "../results")
if not os.path.exists(dirname):
os.mkdir(dirname)
same_datasource_exp_checkpoint = os.path.join(dirname, 'results_from_generic_exp.csv')
appliances = ['microwave', 'dish washer', 'fridge', 'kettle', 'washer dryer',
'toaster', 'television', 'hair dryer', 'vacuum cleaner']
env = EnvironmentFactory.create_env_single_building(datasource=DatasourceFactory.create_uk_dale_datasource(),
appliances=appliances)
experiment = GenericExperiment(env)
window = TimeSeriesLength.WINDOW_10_MINS
models = {}
if window == TimeSeriesLength.WINDOW_10_MINS:
models = exp_model_list.selected_models_10mins
elif window == TimeSeriesLength.WINDOW_1_HOUR:
models = exp_model_list.selected_models_1h
elif window == TimeSeriesLength.WINDOW_2_HOURS:
models = exp_model_list.selected_models_2h
elif window == TimeSeriesLength.WINDOW_8_HOURS:
models = exp_model_list.selected_models_8h
elif window == TimeSeriesLength.WINDOW_4_HOURS:
models = exp_model_list.selected_models_4h
elif window == TimeSeriesLength.WINDOW_1_DAY:
models = exp_model_list.selected_models_24h
for k in models.keys():
if k is not SAX:
continue
experiment.setup_running_params(
transformer_models=models[k][TRANSFORMER_MODELS],
classifier_models=models[k][CLF_MODELS],
train_appliances=appliances,
test_appliances=appliances,
ts_len=window,
repeat=1)
experiment.set_checkpoint_file(same_datasource_exp_checkpoint)
tb = "No error"
try:
experiment.run()
except Exception as e:
tb = traceback.format_exc()
debug(tb)
debug(f"Failed for {k}")
debug(f"{e}")