From b8a1089592d2b6087fbd6dace25b2211d39cc93d Mon Sep 17 00:00:00 2001 From: robcaulk Date: Sun, 3 Mar 2024 12:23:18 +0100 Subject: [PATCH 1/3] fix: try plotting as much info in xgboost tensorboard as possible --- freqtrade/freqai/tensorboard/tensorboard.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/freqtrade/freqai/tensorboard/tensorboard.py b/freqtrade/freqai/tensorboard/tensorboard.py index 46bf8dc61..3ac58a117 100644 --- a/freqtrade/freqai/tensorboard/tensorboard.py +++ b/freqtrade/freqai/tensorboard/tensorboard.py @@ -46,10 +46,8 @@ class TensorBoardCallback(BaseTensorBoardCallback): for data, metric in evals_log.items(): for metric_name, log in metric.items(): score = log[-1][0] if isinstance(log[-1], tuple) else log[-1] - if data == "train": - self.writer.add_scalar("train_loss", score, epoch) - else: - self.writer.add_scalar("valid_loss", score, epoch) + key = self._get_key(data, metric_name) + self.writer.add_scalar(f"{key}_loss", score, epoch) return False From 093a093bd513111dce24c200fc2636cb7e6185c1 Mon Sep 17 00:00:00 2001 From: robcaulk Date: Sun, 3 Mar 2024 12:38:51 +0100 Subject: [PATCH 2/3] fix: use data metric_name directly --- freqtrade/freqai/tensorboard/tensorboard.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/freqtrade/freqai/tensorboard/tensorboard.py b/freqtrade/freqai/tensorboard/tensorboard.py index 3ac58a117..d91c70c81 100644 --- a/freqtrade/freqai/tensorboard/tensorboard.py +++ b/freqtrade/freqai/tensorboard/tensorboard.py @@ -46,8 +46,7 @@ class TensorBoardCallback(BaseTensorBoardCallback): for data, metric in evals_log.items(): for metric_name, log in metric.items(): score = log[-1][0] if isinstance(log[-1], tuple) else log[-1] - key = self._get_key(data, metric_name) - self.writer.add_scalar(f"{key}_loss", score, epoch) + self.writer.add_scalar(f"{data}-{metric_name}", score, epoch) return False From a948796ef74449952a4f57268304f616e8a6aa33 Mon Sep 17 00:00:00 2001 From: robcaulk Date: Sun, 3 Mar 2024 15:47:19 +0100 Subject: [PATCH 3/3] fix: manually add train eval since xgboost does not expose this information by default --- .../freqai/prediction_models/XGBoostRegressor.py | 11 +++++++++-- freqtrade/freqai/tensorboard/tensorboard.py | 7 ++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/freqtrade/freqai/prediction_models/XGBoostRegressor.py b/freqtrade/freqai/prediction_models/XGBoostRegressor.py index f1a2474da..f3de6653b 100644 --- a/freqtrade/freqai/prediction_models/XGBoostRegressor.py +++ b/freqtrade/freqai/prediction_models/XGBoostRegressor.py @@ -36,8 +36,15 @@ class XGBoostRegressor(BaseRegressionModel): eval_set = None eval_weights = None else: - eval_set = [(data_dictionary["test_features"], data_dictionary["test_labels"])] - eval_weights = [data_dictionary['test_weights']] + eval_set = [ + (data_dictionary["test_features"], + data_dictionary["test_labels"]), + (X, y) + ] + eval_weights = [ + data_dictionary['test_weights'], + data_dictionary['train_weights'] + ] sample_weight = data_dictionary["train_weights"] diff --git a/freqtrade/freqai/tensorboard/tensorboard.py b/freqtrade/freqai/tensorboard/tensorboard.py index d91c70c81..3ad896108 100644 --- a/freqtrade/freqai/tensorboard/tensorboard.py +++ b/freqtrade/freqai/tensorboard/tensorboard.py @@ -43,10 +43,11 @@ class TensorBoardCallback(BaseTensorBoardCallback): if not evals_log: return False - for data, metric in evals_log.items(): - for metric_name, log in metric.items(): + evals = ["validation", "train"] + for metric, eval in zip(evals_log.items(), evals): + for metric_name, log in metric[1].items(): score = log[-1][0] if isinstance(log[-1], tuple) else log[-1] - self.writer.add_scalar(f"{data}-{metric_name}", score, epoch) + self.writer.add_scalar(f"{eval}-{metric_name}", score, epoch) return False