model_training_parameters,
self._optuna_config.get("space_reduction"),
self._optuna_config.get("space_fraction"),
+ dk.data_path,
),
direction=optuna.study.StudyDirection.MINIMIZE,
)
eval_weights=eval_weights,
model_training_parameters=model_training_parameters,
init_model=self.get_init_model(dk.pair),
+ model_path=dk.data_path,
)
time_spent = time.time() - start_time
self.dd.update_metric_tracker("fit_time", time_spent, dk.pair)
model_training_parameters: dict[str, Any],
space_reduction: bool,
space_fraction: float,
+ model_path: Optional[Path] = None,
) -> float:
study_model_parameters = get_optuna_study_model_parameters(
trial,
eval_set=eval_set,
eval_weights=eval_weights,
model_training_parameters=model_training_parameters,
+ model_path=model_path,
trial=trial,
)
y_pred = model.predict(X_test)
from enum import IntEnum
from functools import lru_cache
from logging import Logger
+from pathlib import Path
from typing import (
TYPE_CHECKING,
Any,
model_training_parameters: dict[str, Any],
init_model: Any = None,
callbacks: Optional[list[RegressorCallback]] = None,
+ model_path: Optional[Path] = None,
trial: Optional[optuna.trial.Trial] = None,
) -> Any:
"""Fit a regressor model."""
model_training_parameters.setdefault("random_seed", 1)
model_training_parameters.setdefault("loss_function", "RMSE")
+ if model_path is not None and "train_dir" not in model_training_parameters:
+ if trial is not None:
+ trial_path = model_path / f"hp_trial_{trial.number}"
+ trial_path.mkdir(parents=True, exist_ok=True)
+ model_training_parameters["train_dir"] = str(
+ trial_path / "catboost_info"
+ )
+ else:
+ model_training_parameters["train_dir"] = str(
+ model_path / "catboost_info"
+ )
+
task_type = model_training_parameters.get("task_type", "CPU")
loss_function = model_training_parameters.get("loss_function", "RMSE")
if task_type == "GPU":