-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodelGen.py
More file actions
83 lines (63 loc) · 2.63 KB
/
modelGen.py
File metadata and controls
83 lines (63 loc) · 2.63 KB
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
from models import *
import pandas as pd
from address import *
import json
# Model factory pattern
def modelGen(modelID:str,data,params:dict={},verbose=True,debug = False):
'''
ARGUMENTS
modelID (str) ID that indicates the model type
data (featExtraction object) Data object needed to train
params (dict) the params that define the model
'''
data = data
modelID = modelID
params = params
if verbose:
print("Building model")
if not params and not debug:
if verbose:
print("loading best hyperparameters")
params_path = get_param_path(modelID)
with open(params_path) as f:
params = json.load(f)
#df_params = pd.read_csv(params_path,index_col=0)
#params = ast.literal_eval(df_params.loc[data.dataID,'params'])[0]
#TODO: Make it more generic: https://stackoverflow.com/questions/456672/class-factory-in-python
for cls in BaseModel.__subclasses__():
print(cls.get_model_name())
if cls.is_model_for(modelID):
return cls(data,params)
raise Exception("Model not implemented")
if __name__ == "__main__":
import ipdb
from data import HOSPData,UKDALEData
import matplotlib.pyplot as plt
# # Ejemplo lectura hospital
# dataGen = HOSPData(path="./data/")
# trainMain,trainTargets, trainStates = dataGen.get_train_sequences( start = "2018-04-01",end="2019-02-28")
# testMain,testTargets, testStates = dataGen.get_train_sequences( start = "2018-03-01",end="2018-04-01")
# app_data = dataGen.get_app_data()
# data= {"X_train":trainMain,
# "Y_train":trainTargets,
# "Z_train":trainStates,
# "X_test":testMain,
# "Y_test":testTargets,
# "apps": app_data.keys()
# }
# TEST UKDALE AND U-NET
plt.ion()
dataGen = UKDALEData(path="./data/")
trainMain,trainTargets, trainStates = dataGen.get_train_sequences(houses = 1, start = "2014-01-01",end="2016-02-01")
testMain,testTargets, testStates = dataGen.get_train_sequences(houses = 1, start = "2016-01-01",end="2016-07-01")
app_data = dataGen.get_app_data()
data= {"X_train":trainMain,
"Y_train":trainTargets,
"Z_train":trainStates,
"X_test":testMain,
"Y_test":testTargets,
"apps": app_data.keys()
}
params = {'sequence_length':100,'stride':50,'epochs':2}
model = modelGen("UNET",data,params)
X,Y = model.preprocessing(data["X_train"],data["Y_train"],data["Z_train"])