Ale37 commited on
Commit
a788d0f
·
1 Parent(s): 05690d2

split train predict + fixes

Browse files
Files changed (1) hide show
  1. src/model.py +25 -9
src/model.py CHANGED
@@ -7,6 +7,7 @@ from darts.dataprocessing.transformers import Scaler
7
  import matplotlib.pyplot as plt
8
  import numpy as np
9
  import pandas as pd
 
10
 
11
  def load_ILINetDataset():
12
  """
@@ -41,7 +42,7 @@ def load_ILINetDataset():
41
 
42
  def preprocess_data(ilidata):
43
  ilitotal = ilidata['ILITOTAL']
44
- covariates = ilidata.drop_columns(col_names='ILITOTAL')
45
 
46
  # Apply logaritmic transformation
47
  log_ili = ilitotal.map(np.log)
@@ -69,14 +70,27 @@ def scale_train(train_ili):
69
  return train_ili_scaled, scaler
70
 
71
 
72
- def train_exponential_smoothing(train_ili_scaled, val_ili):
73
- exp_sm = ExponentialSmoothing()
74
- exp_sm.fit(train_ili_scaled)
75
- exp_preds = exp_sm.predict(len(val_ili))
 
 
 
 
 
 
 
76
 
77
  # print('Exponential Smoothing mape:', mape(val_ili, scaler.inverse_transform(exp_preds)))
78
 
79
- return exp_preds
 
 
 
 
 
 
80
 
81
 
82
  def inverse_scale_predictions(scaled_preds, scaler):
@@ -85,11 +99,13 @@ def inverse_scale_predictions(scaled_preds, scaler):
85
  return preds
86
 
87
 
88
- def plot_results(train_ili, val_ili, exp_preds):
 
89
  train_ili.plot(label='train')
90
  val_ili.plot(label='val')
91
- exp_preds.plot(label='preds')
92
- plt.savefig('./charts/results.png')
 
93
 
94
 
95
 
 
7
  import matplotlib.pyplot as plt
8
  import numpy as np
9
  import pandas as pd
10
+ import os
11
 
12
  def load_ILINetDataset():
13
  """
 
42
 
43
  def preprocess_data(ilidata):
44
  ilitotal = ilidata['ILITOTAL']
45
+ covariates = ilidata.drop_columns(col_names='ILITOTAL') # TODO perform predictions with covariates time series
46
 
47
  # Apply logaritmic transformation
48
  log_ili = ilitotal.map(np.log)
 
70
  return train_ili_scaled, scaler
71
 
72
 
73
+ def train_(train_ili_scaled, val_ili, save_model_path='./models'):
74
+ model = ExponentialSmoothing()
75
+ model.fit(train_ili_scaled)
76
+
77
+ model_name = str(model).split('(')[0]
78
+ path = f'{save_model_path}/{model_name}.pkl'
79
+ if not os.path.exists(path=path):
80
+ os.makedirs(path)
81
+ model.save(path)
82
+ else:
83
+ model = ExponentialSmoothing.load(path)
84
 
85
  # print('Exponential Smoothing mape:', mape(val_ili, scaler.inverse_transform(exp_preds)))
86
 
87
+ return model
88
+
89
+
90
+ def predict(model, val_ili):
91
+ preds = model.predict(len(val_ili))
92
+
93
+ return preds
94
 
95
 
96
  def inverse_scale_predictions(scaled_preds, scaler):
 
99
  return preds
100
 
101
 
102
+ def plot_results(train_ili, val_ili, preds):
103
+ fig, _ = plt.subplots()
104
  train_ili.plot(label='train')
105
  val_ili.plot(label='val')
106
+ preds.plot(label='preds')
107
+
108
+ return fig
109
 
110
 
111