class_docstr: Transformer for multivariate time series.
  
  It provides a convenient class to transform multivariate time series with
  transformers that can only deal with univariate time series.
  
  Parameters
  ----------
  estimator : estimator object or list thereof
      Transformer. If one estimator is provided, it is cloned and each clone
      transforms one feature. If a list of estimators is provided, each
      estimator transforms one feature.
  
  flatten : bool (default = True)
      Affect shape of transform output. If True, ``transform``
      returns an array with shape (n_samples, \*). If False, the output of
      ``transform`` from each estimator must have the same shape and
      ``transform`` returns an array with shape (n_samples, n_features, \*).
      Ignored if the transformers return sparse matrices.
  
  Attributes
  ----------
  estimators_ : list of estimator objects
      The collection of fitted transformers.
  
  Examples
  --------
  >>> from pyts.datasets import load_basic_motions
  >>> from pyts.multivariate.transformation import MultivariateTransformer
  >>> from pyts.image import GramianAngularField
  >>> X, _, _, _ = load_basic_motions(return_X_y=True)
  >>> transformer = MultivariateTransformer(GramianAngularField(),
  ...                                       flatten=False)
  >>> X_new = transformer.fit_transform(X)
  >>> X_new.shape
  (40, 6, 100, 100)
docstr: Check parameters.
docstr_tok: ["Check","parameters","."]
code: def _check_params(self, n_features):
      """Check parameters."""
      transformer = isinstance(
          self.estimator, BaseEstimator
      ) and hasattr(self.estimator, "transform")
      if transformer:
          self.estimators_ = [
              clone(self.estimator) for _ in range(n_features)
          ]
  
      elif isinstance(self.estimator, list):
          if len(self.estimator) != n_features:
              raise ValueError(
                  "If 'estimator' is a list, its length must be equal to "
                  "the number of features ({0} != {1})".format(
                      len(self.estimator), n_features
                  )
              )
          for i, estimator in enumerate(self.estimator):
              if not (
                  isinstance(estimator, BaseEstimator)
                  and hasattr(estimator, "transform")
              ):
                  raise ValueError(
                      "Estimator {} must be a transformer.".format(i)
                  )
          self.estimators_ = self.estimator
  
      else:
          raise TypeError(
              "'estimator' must be a transformer that inherits from "
              "sklearn.base.BaseEstimator or a list thereof."
          )
  
file_path: pyts/pyts/multivariate/transformation/multivariate.py
imports: import numpy
  from scipy.sparse import csr_matrix, hstack
  from sklearn.base import BaseEstimator, clone
  from sklearn.utils.validation import check_is_fitted
  from ...base import MultivariateTransformerMixin
  from ..utils import check_3d_array
label_desc: Use image node_id 4 for calling the MultivariateTransformer obj's underlying member method code with example usage: obj._check_params(n_features) without return types