class_docstr: Core abstraction in modAL.
  
  Args:
      estimator: The estimator to be used in the active learning loop.
      query_strategy: Function providing the query strategy for the active learning loop,
          for instance, modAL.uncertainty.uncertainty_sampling.
      force_all_finite: When True, forces all values of the data finite.
          When False, accepts np.nan and np.inf values.
      on_transformed: Whether to transform samples with the pipeline defined by the estimator
          when applying the query strategy.
      **fit_kwargs: keyword arguments.
  
  Attributes:
      estimator: The estimator to be used in the active learning loop.
      query_strategy: Function providing the query strategy for the active learning loop.
docstr: Transforms the data as supplied to the estimator.
  
  * In case the estimator is an skearn pipeline, it applies all pipeline components but the last one.
  * In case the estimator is an ensemble, it concatenates the transformations for each classfier
      (pipeline) in the ensemble.
  * Otherwise returns the non-transformed dataset X
  Args:
      X: dataset to be transformed
  
  Returns:
      Transformed data set
docstr_tok: ["Transforms","the","data","as","supplied","to","the","estimator",".","*","In","case","the","estimator","is","an","skearn","pipeline",",","it","applies","all","pipeline","components","but","the","last","one",".","*","In","case","the","estimator","is","an","ensemble",",","it","concatenates","the","transformations","for","each","classfier","(","pipeline",")","in","the","ensemble",".","*","Otherwise","returns","the","non-transformed","dataset","X","Args",":","X",":","dataset","to","be","transformed","Returns",":","Transformed","data","set"]
code: def transform_without_estimating(
      self, X: modALinput
  ) -> Union[np.ndarray, sp.csr_matrix]:
      """
      Transforms the data as supplied to the estimator.
  
      * In case the estimator is an skearn pipeline, it applies all pipeline components but the last one.
      * In case the estimator is an ensemble, it concatenates the transformations for each classfier
          (pipeline) in the ensemble.
      * Otherwise returns the non-transformed dataset X
      Args:
          X: dataset to be transformed
  
      Returns:
          Transformed data set
      """
      Xt = []
      pipes = [self.estimator]
  
      if isinstance(self.estimator, _BaseHeterogeneousEnsemble):
          pipes = self.estimator.estimators_
  
      ################################
      # transform data with pipelines used by estimator
      for pipe in pipes:
          if isinstance(pipe, Pipeline):
              # NOTE: The used pipeline class might be an extension to sklearn's!
              #       Create a new instance of the used pipeline class with all
              #       components but the final estimator, which is replaced by an empty (passthrough) component.
              #       This prevents any special handling of the final transformation pipe, which is usually
              #       expected to be an estimator.
              transformation_pipe = pipe.__class__(
                  steps=[
                      *pipe.steps[:-1],
                      ("passthrough", "passthrough"),
                  ]
              )
              Xt.append(transformation_pipe.transform(X))
  
      # in case no transformation pipelines are used by the estimator,
      # return the original, non-transfored data
      if not Xt:
          return X
  
      ################################
      # concatenate all transformations and return
      return data_hstack(Xt)
  
imports: import abc
  import sys
  import warnings
  from typing import Any, Callable, Iterator, List, Tuple, Union
  import numpy
  import scipy.sparse
  from modAL.utils.data import data_hstack, modALinput, retrieve_rows
  from sklearn.base import BaseEstimator
  from sklearn.ensemble._base import _BaseHeterogeneousEnsemble
  from sklearn.pipeline import Pipeline
label_desc: Use image node_id 2 for calling the BaseLearner obj's underlying member method code with example usage: obj.transform_without_estimating(X) and returns: data_hstack, X