13
13
plot_df_test_with_confidence_interval ,
14
14
plot_df_test_with_probabilistic_confidence_interval )
15
15
16
+
16
17
def handle_model_evaluation1 (test_acc , params : Dict ) -> None :
17
18
"""Utility function to help handle model evaluation. Primarily used at the moment for forecasting models.
18
19
@@ -28,7 +29,7 @@ def handle_model_evaluation1(test_acc, params: Dict) -> None:
28
29
forecast_start_idx = test_acc [2 ]
29
30
df_prediction_samples = test_acc [3 ]
30
31
mae = (df_train_and_test .loc [forecast_start_idx :, "preds" ] -
31
- df_train_and_test .loc [forecast_start_idx :, params ["dataset_params" ]["target_col" ][0 ]]).abs ()
32
+ df_train_and_test .loc [forecast_start_idx :, params ["dataset_params" ]["target_col" ][0 ]]).abs ()
32
33
inverse_mae = 1 / mae
33
34
i = 0
34
35
for df in df_prediction_samples :
@@ -71,6 +72,7 @@ def handle_model_evaluation1(test_acc, params: Dict) -> None:
71
72
name = relevant_col ))
72
73
wandb .log ({"test_plot_all" : test_plot_all })
73
74
75
+
74
76
def handle_core_eval (trained_model , params : Dict , model_type : str ):
75
77
"""_summary_
76
78
@@ -89,8 +91,8 @@ def handle_core_eval(trained_model, params: Dict, model_type: str):
89
91
params ["inference_params" ],
90
92
{})
91
93
if params ["dataset_params" ]["class" ] == "SeriesIDLoader" :
92
- data = test_acc [1 ]
93
- for i in range (len (data )):
94
+ data = test_acc [1 ]
95
+ for i in range (len (data )):
94
96
tuple_for_eval = (test_acc [0 ][i ], test_acc [1 ][i ], test_acc [2 ][i ], test_acc [3 ][i ])
95
97
handle_model_evaluation1 (tuple_for_eval , params )
96
98
else :
@@ -146,12 +148,26 @@ def train_function(model_type: str, params: Dict) -> PyTorchForecast:
146
148
trained_model .params ["inference_params" ]["dataset_params" ] = trained_model .params ["dataset_params" ].copy ()
147
149
del trained_model .params ["inference_params" ]["dataset_params" ]["class" ]
148
150
# noqa: F501
149
- trained_model .params ["inference_params" ]["dataset_params" ]["interpolate_param" ] = trained_model .params ["inference_params" ]["dataset_params" ].pop ("interpolate" )
150
- trained_model .params ["inference_params" ]["dataset_params" ]["scaling" ] = trained_model .params ["inference_params" ]["dataset_params" ].pop ("scaler" )
151
+ trained_model .params ["inference_params" ]["dataset_params" ]["interpolate_param" ] = trained_model .params ["inference_params" ]["dataset_params" ].pop (
152
+ "interpolate" )
153
+ trained_model .params ["inference_params" ]["dataset_params" ]["scaling" ] = trained_model .params ["inference_params" ]["dataset_params" ].pop (
154
+ "scaler" )
151
155
if "feature_param" in trained_model .params ["dataset_params" ]:
152
- trained_model .params ["inference_params" ]["dataset_params" ]["feature_params" ] = trained_model .params ["inference_params" ]["dataset_params" ].pop ("feature_param" )
153
- delete_params = ["num_workers" , "pin_memory" , "train_start" , "train_end" , "valid_start" , "valid_end" , "test_start" , "test_end" ,
154
- "training_path" , "validation_path" , "test_path" , "batch_size" ]
156
+ trained_model .params ["inference_params" ]["dataset_params" ]["feature_params" ] = trained_model .params ["inference_params" ]["dataset_params" ].pop (
157
+ "feature_param" )
158
+ delete_params = [
159
+ "num_workers" ,
160
+ "pin_memory" ,
161
+ "train_start" ,
162
+ "train_end" ,
163
+ "valid_start" ,
164
+ "valid_end" ,
165
+ "test_start" ,
166
+ "test_end" ,
167
+ "training_path" ,
168
+ "validation_path" ,
169
+ "test_path" ,
170
+ "batch_size" ]
155
171
for param in delete_params :
156
172
if param in trained_model .params ["inference_params" ]["dataset_params" ]:
157
173
del trained_model .params ["inference_params" ]["dataset_params" ][param ]
@@ -168,21 +184,23 @@ def train_function(model_type: str, params: Dict) -> PyTorchForecast:
168
184
dataset_params )["scaling" ]
169
185
params ["inference_params" ]["dataset_params" ].pop ('scaler_params' , None )
170
186
# TODO Move to other func
171
- if params ["dataset_params" ]["class" ] != "GeneralClassificationLoader" and params ["dataset_params" ]["class" ] != "VariableSequenceLength" :
187
+ if params ["dataset_params" ]["class" ] != "GeneralClassificationLoader" and params ["dataset_params" ]["class" ] != "VariableSequenceLength" :
172
188
handle_core_eval (trained_model , params , model_type )
173
189
174
190
else :
175
191
raise Exception ("Please supply valid model type for forecasting or classification" )
176
192
return trained_model
177
193
194
+
178
195
def correct_stupid_sklearn_error (training_conf : Dict ) -> Dict :
179
196
"""Sklearn for whatever reason decided to only allow scaler params in the form of tuples
180
197
this was stupid so now we have to convert JSON list to tuple.
181
198
182
199
:param scaling_params: A list of the scaling params
183
200
:type training_conf: Dict
184
201
"""
185
- training_conf ["dataset_params" ]["scaler_params" ]["feature_range" ] = tuple (training_conf ["dataset_params" ]["scaler_params" ]["feature_range" ])
202
+ training_conf ["dataset_params" ]["scaler_params" ]["feature_range" ] = tuple (
203
+ training_conf ["dataset_params" ]["scaler_params" ]["feature_range" ])
186
204
if "dataset_params" in training_conf ["inference_params" ]:
187
205
del training_conf ["inference_params" ]["dataset_params" ]
188
206
print ("Fixed dumbass sklearn errors morons should've never changed it" )
0 commit comments