class_docstr: Abstract base class for time series clusterer.
  
  Parameters
  ----------
  n_clusters: int, defaults = None
      Number of clusters for model.
class_docstr_tok: ["Abstract","base","class","for","time","series","clusterer",".","Parameters","--","--","--","--","--","n_clusters",":","int",",","defaults","=","None","Number","of","clusters","for","model","."]
docstr: Magic * method, return concatenated ClustererPipeline, transformers on left.
  
  Overloaded multiplication operation for clusterers. Implemented for `other`
  being a transformer, otherwise returns `NotImplemented`.
  
  Parameters
  ----------
  other: `sktime` transformer, must inherit from BaseTransformer
      otherwise, `NotImplemented` is returned
  
  Returns
  -------
  ClustererPipeline object, concatenation of `other` (first) with `self` (last).
docstr_tok: ["Magic","*","method",",","return","concatenated","ClustererPipeline",",","transformers","on","left",".","Overloaded","multiplication","operation","for","clusterers",".","Implemented","for","`","other","`","being","a","transformer",",","otherwise","returns","`","NotImplemented","`",".","Parameters","--","--","--","--","--","other",":","`","sktime","`","transformer",",","must","inherit","from","BaseTransformer","otherwise",",","`","NotImplemented","`","is","returned","Returns","--","--","--","-","ClustererPipeline","object",",","concatenation","of","`","other","`","(","first",")","with","`","self","`","(","last",")","."]
code: def __rmul__(self, other):
      """Magic * method, return concatenated ClustererPipeline, transformers on left.
  
      Overloaded multiplication operation for clusterers. Implemented for `other`
      being a transformer, otherwise returns `NotImplemented`.
  
      Parameters
      ----------
      other: `sktime` transformer, must inherit from BaseTransformer
          otherwise, `NotImplemented` is returned
  
      Returns
      -------
      ClustererPipeline object, concatenation of `other` (first) with `self` (last).
      """
      from sktime.clustering.compose import ClustererPipeline
      from sktime.transformations.base import BaseTransformer
      from sktime.transformations.compose import TransformerPipeline
      from sktime.transformations.series.adapt import (
          TabularToSeriesAdaptor,
      )
  
      # behaviour is implemented only if other inherits from BaseTransformer
      #  in that case, distinctions arise from whether self or other is a pipeline
      #  todo: this can probably be simplified further with "zero length" pipelines
      if isinstance(other, BaseTransformer):
          # ClustererPipeline already has the dunder method defined
          if isinstance(self, ClustererPipeline):
              return other * self
          # if other is a TransformerPipeline but self is not, first unwrap it
          elif isinstance(other, TransformerPipeline):
              return ClustererPipeline(
                  clusterer=self, transformers=other.steps
              )
          # if neither self nor other are a pipeline, construct a ClustererPipeline
          else:
              return ClustererPipeline(
                  clusterer=self, transformers=[other]
              )
      elif is_sklearn_transformer(other):
          return TabularToSeriesAdaptor(other) * self
      else:
          return NotImplemented
  
imports: import time
  from typing import Any, Union
  import numpy
  import pandas
  from sktime.base import BaseEstimator
  from sktime.datatypes import check_is_scitype, convert_to, scitype_to_mtype
  from sktime.utils.sklearn import is_sklearn_transformer
  from sktime.utils.validation import check_n_jobs
  from sktime.utils.validation._dependencies import _check_estimator_deps
label_desc: Use image node_id 2 for calling the BaseClusterer obj's underlying member method code with example usage: obj.__rmul__(other) and returns: unknown, unknown, NotImplemented, ClustererPipeline, ClustererPipeline