class_docstr: Config class for an ensemble of forecasters.
class_docstr_tok: ["Config","class","for","an","ensemble","of","forecasters","."]
code: def __init__(
      self,
      max_forecast_steps=None,
      target_seq_index=None,
      verbose=False,
      **kwargs,
  ):
      self.verbose = verbose
      super().__init__(
          max_forecast_steps=max_forecast_steps,
          target_seq_index=None,
          **kwargs,
      )
      # Override the target_seq_index of all individual models after everything has been initialized
      # FIXME: doesn't work if models have heterogeneous transforms which change the dim of the input time series
      self.target_seq_index = target_seq_index
      if self.models is not None:
          assert all(
              model.target_seq_index == self.target_seq_index
              for model in self.models
          )
  
imports: import logging
  import traceback
  from typing import List, Optional, Tuple, Union
  import pandas
  from merlion.evaluate.forecast import ForecastEvaluator, ForecastEvaluatorConfig
  from merlion.models.ensemble.base import EnsembleConfig, EnsembleTrainConfig, EnsembleBase
  from merlion.models.ensemble.combine import Mean
  from merlion.models.forecast.base import ForecasterBase, ForecasterExogConfig, ForecasterExogBase
  from merlion.utils.time_series import TimeSeries
label_desc: Use image node_id 1 to create a new ForecasterEnsembleConfig object from inherited base classes: ForecasterExogConfig, EnsembleConfig with example: obj = ForecasterEnsembleConfig(max_forecast_steps, target_seq_index, verbose)