class_docstr: Base class for stacking method.
class_docstr_tok: ["Base","class","for","stacking","method","."]
docstr: Get output feature names for transformation.
  
  Parameters
  ----------
  input_features : array-like of str or None, default=None
      Input features. The input feature names are only used when `passthrough` is
      `True`.
  
      - If `input_features` is `None`, then `feature_names_in_` is
        used as feature names in. If `feature_names_in_` is not defined,
        then names are generated: `[x0, x1, ..., x(n_features_in_ - 1)]`.
      - If `input_features` is an array-like, then `input_features` must
        match `feature_names_in_` if `feature_names_in_` is defined.
  
      If `passthrough` is `False`, then only the names of `estimators` are used
      to generate the output feature names.
  
  Returns
  -------
  feature_names_out : ndarray of str objects
      Transformed feature names.
code: def get_feature_names_out(self, input_features=None):
      """Get output feature names for transformation.
  
      Parameters
      ----------
      input_features : array-like of str or None, default=None
          Input features. The input feature names are only used when `passthrough` is
          `True`.
  
          - If `input_features` is `None`, then `feature_names_in_` is
            used as feature names in. If `feature_names_in_` is not defined,
            then names are generated: `[x0, x1, ..., x(n_features_in_ - 1)]`.
          - If `input_features` is an array-like, then `input_features` must
            match `feature_names_in_` if `feature_names_in_` is defined.
  
          If `passthrough` is `False`, then only the names of `estimators` are used
          to generate the output feature names.
  
      Returns
      -------
      feature_names_out : ndarray of str objects
          Transformed feature names.
      """
      check_is_fitted(self, "n_features_in_")
      input_features = _check_feature_names_in(
          self, input_features, generate_names=self.passthrough
      )
  
      class_name = self.__class__.__name__.lower()
      non_dropped_estimators = (
          name for name, est in self.estimators if est != "drop"
      )
      meta_names = []
      for est, n_features_out in zip(
          non_dropped_estimators, self._n_feature_outs
      ):
          if n_features_out == 1:
              meta_names.append(f"{class_name}_{est}")
          else:
              meta_names.extend(
                  f"{class_name}_{est}{i}"
                  for i in range(n_features_out)
              )
  
      if self.passthrough:
          return np.concatenate((meta_names, input_features))
  
      return np.asarray(meta_names, dtype=object)
  
imports: from abc import ABCMeta, abstractmethod
  from copy import deepcopy
  from numbers import Integral
  import numpy
  import scipy.sparse
  from ..base import ClassifierMixin, RegressorMixin, TransformerMixin, _fit_context, clone, is_classifier, is_regressor
  from ..exceptions import NotFittedError
  from ..linear_model import LogisticRegression, RidgeCV
  from ..model_selection import check_cv, cross_val_predict
  from ..preprocessing import LabelEncoder
  from ..utils import Bunch
  from ..utils._estimator_html_repr import _VisualBlock
  from ..utils._param_validation import HasMethods, StrOptions
  from ..utils.metadata_routing import _raise_for_unsupported_routing, _RoutingNotSupportedMixin
  from ..utils.metaestimators import available_if
  from ..utils.multiclass import check_classification_targets, type_of_target
  from ..utils.parallel import Parallel, delayed
  from ..utils.validation import _check_feature_names_in, _check_response_method, check_is_fitted, column_or_1d
  from ._base import _BaseHeterogeneousEnsemble, _fit_single_estimator
label_desc: Use image node_id 8 for calling the _BaseStacking obj's underlying member method code with example usage: obj.get_feature_names_out(input_features) and returns: np, np