def get_estimator(
        self, horizon: int, target_dim: int, quantile: Optional[float] = None
    ):
        """Returns the estimator that forecasts the `horizon`th step of the `target_dim`th target component.

        For probabilistic models fitting quantiles, it is possible to also specify the quantile.

        The model is returned directly if it supports multi-output natively.

        Note: Internally, estimators are grouped by `output_chunk_length` position, then by component. For probabilistic
        models fitting quantiles, there is an additional abstraction layer, grouping the estimators by `quantile`.

        Parameters
        ----------
        horizon
            The index of the forecasting point within `output_chunk_length`.
        target_dim
            The index of the target component.
        quantile
            Optionally, for probabilistic model with `likelihood="quantile"`, a quantile value.
        """
        if not isinstance(self.model, MultiOutputRegressor):
            logger.warning(
                "Model supports multi-output; a single estimator forecasts all the horizons and components."
            )
            return self.model

        if not 0 <= horizon < self.output_chunk_length:
            raise_log(
                ValueError(
                    f"`horizon` must be `>= 0` and `< output_chunk_length={self.output_chunk_length}`."
                ),
                logger,
            )
        if not 0 <= target_dim < self.input_dim["target"]:
            raise_log(
                ValueError(
                    f"`target_dim` must be `>= 0`, and `< n_target_components={self.input_dim['target']}`."
                ),
                logger,
            )

        # when multi_models=True, one model per horizon and target component
        idx_estimator = (
            self.multi_models * self.input_dim["target"] * horizon + target_dim
        )
        if quantile is None:
            return self.model.estimators_[idx_estimator]

        # for quantile-models, the estimators are also grouped by quantiles
        if not isinstance(self.likelihood, QuantileRegression):
            raise_log(
                ValueError(
                    "`quantile` is only supported for probabilistic models that "
                    "use `likelihood='quantile'`."
                ),
                logger,
            )
        if quantile not in self._model_container:
            raise_log(
                ValueError(
                    f"Invalid `quantile={quantile}`. Must be one of the fitted quantiles "
                    f"`{list(self._model_container.keys())}`."
                ),
                logger,
            )
        return self._model_container[quantile].estimators_[idx_estimator]
Returns the estimator that forecasts the `horizon`th step of the `target_dim`th target component.

        For probabilistic models fitting quantiles, it is possible to also specify the quantile.

        The model is returned directly if it supports multi-output natively.

        Note: Internally, estimators are grouped by `output_chunk_length` position, then by component. For probabilistic
        models fitting quantiles, there is an additional abstraction layer, grouping the estimators by `quantile`.

        Parameters
        ----------
        horizon
            The index of the forecasting point within `output_chunk_length`.
        target_dim
            The index of the target component.
        quantile
            Optionally, for probabilistic model with `likelihood="quantile"`, a quantile value.
        
darts/models/forecasting/sklearn_model.py