Add some errorhandling for custom estimator
This commit is contained in:
		| @@ -45,7 +45,7 @@ progressbar.streams.wrap_stdout() | ||||
| logger = logging.getLogger(__name__) | ||||
|  | ||||
|  | ||||
| INITIAL_POINTS = 30 | ||||
| INITIAL_POINTS = 5 | ||||
|  | ||||
| # Keep no more than SKOPT_MODEL_QUEUE_SIZE models | ||||
| # in the skopt model queue, to optimize memory consumption | ||||
| @@ -366,13 +366,19 @@ class Hyperopt: | ||||
|  | ||||
|     def get_optimizer(self, dimensions: List[Dimension], cpu_count) -> Optimizer: | ||||
|         estimator = self.custom_hyperopt.generate_estimator() | ||||
|  | ||||
|         acq_optimizer = "sampling" | ||||
|         if isinstance(estimator, str): | ||||
|             if estimator not in ("GP", "RF", "ET", "GBRT"): | ||||
|                 raise OperationalException(f"Estimator {estimator} not supported.") | ||||
|             else: | ||||
|                 acq_optimizer = "auto" | ||||
|  | ||||
|         logger.info(f"Using estimator {estimator}.") | ||||
|         # TODO: Impact of changing acq_optimizer to "sampling" is unclear | ||||
|         # (other than that it fails with other optimizers when using custom sklearn regressors) | ||||
|         return Optimizer( | ||||
|             dimensions, | ||||
|             base_estimator=estimator, | ||||
|             acq_optimizer="sampling", | ||||
|             acq_optimizer=acq_optimizer, | ||||
|             n_initial_points=INITIAL_POINTS, | ||||
|             acq_optimizer_kwargs={'n_jobs': cpu_count}, | ||||
|             random_state=self.random_state, | ||||
|   | ||||
| @@ -884,6 +884,10 @@ def test_in_strategy_auto_hyperopt(mocker, hyperopt_conf, tmpdir, fee) -> None: | ||||
|     assert hyperopt.backtesting.strategy.buy_rsi.value != 35 | ||||
|     assert hyperopt.backtesting.strategy.sell_rsi.value != 74 | ||||
|  | ||||
|     hyperopt.custom_hyperopt.generate_estimator = lambda *args, **kwargs: 'ET1' | ||||
|     with pytest.raises(OperationalException, match="Estimator ET1 not supported."): | ||||
|         hyperopt.get_optimizer([], 2) | ||||
|  | ||||
|  | ||||
| def test_SKDecimal(): | ||||
|     space = SKDecimal(1, 2, decimals=2) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user