class Tune(pipeline: etna.pipeline.base.BasePipeline, target_metric: etna.metrics.base.Metric, horizon: int, metric_aggregation: Literal['median', 'mean', 'std', 'percentile_5', 'percentile_25', 'percentile_75', 'percentile_95'] = 'mean', backtest_params: Optional[dict] = None, experiment_folder: Optional[str] = None, runner: Optional[etna.auto.runner.base.AbstractRunner] = None, storage: Optional[optuna.storages._base.BaseStorage] = None, metrics: Optional[List[etna.metrics.base.Metric]] = None, sampler: Optional[optuna.samplers._base.BaseSampler] = None, params_to_tune: Optional[Dict[str, etna.distributions.distributions.BaseDistribution]] = None)[source]

Bases: etna.auto.auto.AutoBase

Automatic tuning of custom pipeline.

This class takes given pipelines and tries to optimize its hyperparameters by using params_to_tune.

Trials with duplicate parameters are skipped and previously computed results are returned.

Initialize Tune class.

  • pipeline (etna.pipeline.base.BasePipeline) – Pipeline to optimize.

  • target_metric (etna.metrics.base.Metric) – Metric to optimize.

  • horizon (int) – Horizon to forecast for.

  • metric_aggregation (Literal['median', 'mean', 'std', 'percentile_5', 'percentile_25', 'percentile_75', 'percentile_95']) – Aggregation method for per-segment metrics. By default, mean aggregation is used.

  • backtest_params (Optional[dict]) – Custom parameters for backtest instead of default backtest parameters.

  • experiment_folder (Optional[str]) – Name for saving experiment results, it determines the name for optuna study. By default, isn’t set.

  • runner (Optional[etna.auto.runner.base.AbstractRunner]) – Runner to use for distributed training. By default, LocalRunner is used.

  • storage (Optional[optuna.storages._base.BaseStorage]) – Optuna storage to use. By default, sqlite storage is used with name “etna-auto.db”.

  • metrics (Optional[List[etna.metrics.base.Metric]]) – List of metrics to compute. By default, Sign, SMAPE, MAE, MSE, MedAE metrics are used.

  • sampler (Optional[optuna.samplers._base.BaseSampler]) – Optuna sampler to use. By default, TPE sampler is used.

  • params_to_tune (Optional[Dict[str, etna.distributions.distributions.BaseDistribution]]) – Parameters of pipeline that should be tuned with corresponding tuning distributions. By default, pipeline.params_to_tune() is used.



fit(ts[, timeout, n_trials, initializer, ...])

Start automatic pipeline tuning.

objective(ts, pipeline, params_to_tune, ...)

Optuna objective wrapper.


Get trials summary.


Get top k pipelines with the best metric value.

fit(ts: etna.datasets.tsdataset.TSDataset, timeout: Optional[int] = None, n_trials: Optional[int] = None, initializer: Optional[etna.auto.auto._Initializer] = None, callback: Optional[etna.auto.auto._Callback] = None, **kwargs) etna.pipeline.base.BasePipeline[source]

Start automatic pipeline tuning.

  • ts (etna.datasets.tsdataset.TSDataset) – TSDataset to fit on.

  • timeout (Optional[int]) – Timeout for optuna. N.B. this is timeout for each worker. By default, isn’t set.

  • n_trials (Optional[int]) – Number of trials for optuna. N.B. this is number of trials for each worker. By default, isn’t set.

  • initializer (Optional[etna.auto.auto._Initializer]) – Object that is called before each pipeline backtest, can be used to initialize loggers.

  • callback (Optional[etna.auto.auto._Callback]) – Object that is called after each pipeline backtest, can be used to log extra metrics.

  • **kwargs – Additional parameters for optuna optuna.study.Study.optimize().

Return type


static objective(ts: etna.datasets.tsdataset.TSDataset, pipeline: etna.pipeline.base.BasePipeline, params_to_tune: Dict[str, etna.distributions.distributions.BaseDistribution], target_metric: etna.metrics.base.Metric, metric_aggregation: Literal['median', 'mean', 'std', 'percentile_5', 'percentile_25', 'percentile_75', 'percentile_95'], metrics: List[etna.metrics.base.Metric], backtest_params: dict, initializer: Optional[etna.auto.auto._Initializer] = None, callback: Optional[etna.auto.auto._Callback] = None) Callable[[optuna.trial._trial.Trial], float][source]

Optuna objective wrapper.


function that runs specified trial and returns its evaluated score

Return type


summary() pandas.core.frame.DataFrame[source]

Get trials summary.

There are columns:

  • hash: hash of the pipeline;

  • pipeline: pipeline object;

  • metrics: columns with metrics’ values;

  • state: state of the trial.


dataframe with detailed info on each performed trial

Return type


top_k(k: int = 5) List[etna.pipeline.base.BasePipeline]

Get top k pipelines with the best metric value.

Only complete and non-duplicate studies are taken into account.


k (int) – Number of pipelines to return.


List of top k pipelines.

Return type