def test_model(model_path): """ Tests results of given model on dataset """ DATA_PATH = 'data/data.csv' if not os.path.isfile(FILE_PATH): wget.download(PREPROCESS_URL, FILE_PATH) dataset = pd.read_csv(DATA_PATH) dataset['target'] = dataset['target'].astype(float) dataset['time_idx'] = dataset['time_idx'].astype(int) time_series = TimeSeriesDataSet.load('models/dataset_time_set') validation = TimeSeriesDataSet.from_dataset(time_series, dataset) all_dataloader = validation.to_dataloader(train=False, num_workers=0) model = TemporalFusionTransformer.load_from_checkpoint(model_path) actuals = torch.cat([y[0] for (x, y) in iter(all_dataloader)]) predictions = model.predict(all_dataloader) print(f'test mape is {((actuals - predictions).abs() / actuals).mean()}') print(f' max mape {max(((actuals - predictions).abs() / actuals))}') res = (actuals - predictions).abs() / actuals print(f' max 99 mape {np.quantile(res, .99)}') # print("wynik", res) res = np.array([int(x) for x in res])
def predict(self, data): """ Transforms data and predicts output based on train model Parameters: self, list of protocols Return: list of results for each protocol based on train model """ print(data) self.save_time_series() dataset = self.prepare_data(data) time_series = TimeSeriesDataSet.load(self.TIMESERIES_PATH) validation = TimeSeriesDataSet.from_dataset(time_series, dataset) val_dataloader = validation.to_dataloader(train=False, num_workers=0) res = self.model.predict(val_dataloader) # print("wynik", res) res = np.array([int(x) for x in res]) return res