]> Piment Noir Git Repositories - freqai-strategies.git/commitdiff
fix(qav3): switch to file backend optuna storage
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Mon, 10 Feb 2025 13:34:04 +0000 (14:34 +0100)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Mon, 10 Feb 2025 13:34:04 +0000 (14:34 +0100)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py
quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py

index 027412e0051ce8427d1dac43a3249457f2044f79..cbed34ab5609c2be4dc36376329aa5f3415a25fe 100644 (file)
@@ -10,6 +10,7 @@ import scipy as spy
 import optuna
 import sklearn
 import warnings
+import re
 
 N_TRIALS = 36
 TEST_SIZE = 0.1
@@ -67,7 +68,7 @@ class LightGBMRegressorQuickAdapterV35(BaseRegressionModel):
 
         start = time.time()
         if self.__optuna_hyperopt:
-            study_name = dk.pair
+            study_name = str(dk.pair)
             storage_dir = str(dk.full_path).rsplit("/", 1)
             pruner = optuna.pruners.HyperbandPruner()
             study = optuna.create_study(
@@ -78,7 +79,11 @@ class LightGBMRegressorQuickAdapterV35(BaseRegressionModel):
                 ),
                 pruner=pruner,
                 direction=optuna.study.StudyDirection.MINIMIZE,
-                storage=f"sqlite:///{storage_dir}/optuna-lgbm.sqlite",
+                storage=optuna.storages.JournalStorage(
+                    optuna.storages.journal.JournalFileBackend(
+                        f"{storage_dir}/optuna-lgbm-{sanitize_path(study_name)}.log"
+                    )
+                ),
                 load_if_exists=True,
             )
             study.optimize(
@@ -334,3 +339,8 @@ def hp_objective(trial, X, y, train_weights, X_test, y_test, test_weights, param
     error = sklearn.metrics.root_mean_squared_error(y_test, y_pred)
 
     return error
+
+
+def sanitize_path(path: str) -> str:
+    allowed = re.compile(r"[^A-Za-z0-9 _\-\.\(\)]")
+    return allowed.sub("_", path)
index 9bc07eb5d4a4b0bbc5be0471bcfd43c5675da018..823b5907a46024985670a72789a2c4123f69d18a 100644 (file)
@@ -10,6 +10,7 @@ import scipy as spy
 import optuna
 import sklearn
 import warnings
+import re
 
 N_TRIALS = 36
 TEST_SIZE = 0.1
@@ -67,7 +68,7 @@ class XGBoostRegressorQuickAdapterV35(BaseRegressionModel):
 
         start = time.time()
         if self.__optuna_hyperopt:
-            study_name = dk.pair
+            study_name = str(dk.pair)
             storage_dir = str(dk.full_path).rsplit("/", 1)
             pruner = optuna.pruners.HyperbandPruner()
             study = optuna.create_study(
@@ -78,7 +79,9 @@ class XGBoostRegressorQuickAdapterV35(BaseRegressionModel):
                 ),
                 pruner=pruner,
                 direction=optuna.study.StudyDirection.MINIMIZE,
-                storage=f"sqlite:///{storage_dir}/optuna-xgboost.sqlite",
+                storage=optuna.storages.journal.JournalFileBackend(
+                    f"{storage_dir}/optuna-xgboost-{sanitize_path(study_name)}.log"
+                ),
                 load_if_exists=True,
             )
             study.optimize(
@@ -342,3 +345,8 @@ def hp_objective(trial, X, y, train_weights, X_test, y_test, test_weights, param
     error = sklearn.metrics.root_mean_squared_error(y_test, y_pred)
 
     return error
+
+
+def sanitize_path(path: str) -> str:
+    allowed = re.compile(r"[^A-Za-z0-9 _\-\.\(\)]")
+    return allowed.sub("_", path)