class_docstr: Multi RandOm Convolutional KErnel Transform (MultiRocket).
  
  MultiRocket [1]_ is uses the same set of kernels as MiniRocket on both the raw
  series and the first order differenced series representation. It uses a different
  set of dilations and used for each representation. In addition to percentage of
  positive values (PPV) MultiRocket adds 3 pooling operators: Mean of Positive
  Values (MPV); Mean of Indices of Positive Values (MIPV); and Longest Stretch of
  Positive Values (LSPV). This version is the multivariate version.
  
  This transformer fits one set of paramereters per individual series,
  and applies the transform with fitted parameter i to the i-th series in transform.
  Vanilla use requires same number of series in fit and transform.
  
  To fit and transform series at the same time,
  without an identification of fit/transform instances,
  wrap this transformer in ``FitInTransform``,
  from ``sktime.transformations.compose``.
  
  Parameters
  ----------
  num_kernels : int, default=6,250
     number of random convolutional kernels. The calculated number of features is the
     nearest multiple of n_features_per_kernel(default 4)*84=336 < 50,000
     (2*n_features_per_kernel(default 4)*num_kernels(default 6,250)).
  max_dilations_per_kernel : int, default=32
      maximum number of dilations per kernel.
  n_features_per_kernel : int, default =4
      number of features per kernel.
  normalise : bool, default False
  n_jobs : int, default=1
      The number of jobs to run in parallel for `transform`. ``-1`` means using all
      processors.
  random_state : None or int, default = None
  
  Attributes
  ----------
  parameter : tuple
      parameter (dilations, num_features_per_dilation, biases) for
      transformation of input X
  parameter1 : tuple
      parameter (dilations, num_features_per_dilation, biases) for
      transformation of input X1 = np.diff(X, 1)
  
  See Also
  --------
  MultiRocketMultivariate, MiniRocket, MiniRocketMultivariate, Rocket
  
  References
  ----------
  .. [1] Tan, Chang Wei and Dempster, Angus and Bergmeir, Christoph and
  Webb, Geoffrey I, "MultiRocket: Multiple pooling operators and transformations
  for fast and effective time series classification",2022,
  https://link.springer.com/article/10.1007/s10618-022-00844-1
  https://arxiv.org/abs/2102.00457
  
  Examples
  --------
   >>> from sktime.transformations.panel.rocket import Rocket
   >>> from sktime.datasets import load_basic_motions
   >>> X_train, y_train = load_basic_motions(split="train") # doctest: +SKIP
   >>> X_test, y_test = load_basic_motions(split="test") # doctest: +SKIP
   >>> trf = MultiRocketMultivariate(num_kernels=512) # doctest: +SKIP
   >>> trf.fit(X_train) # doctest: +SKIP
   MultiRocketMultivariate(...)
   >>> X_train = trf.transform(X_train) # doctest: +SKIP
   >>> X_test = trf.transform(X_test) # doctest: +SKIP
docstr: Transform input time series using random convolutional kernels.
  
  Parameters
  ----------
  X : 3D np.ndarray of shape = [n_instances, n_dimensions, series_length]
      panel of time series to transform
  y : ignored argument for interface compatibility
  
  Returns
  -------
  pandas DataFrame, transformed features
code: def _transform(self, X, y=None):
      """Transform input time series using random convolutional kernels.
  
      Parameters
      ----------
      X : 3D np.ndarray of shape = [n_instances, n_dimensions, series_length]
          panel of time series to transform
      y : ignored argument for interface compatibility
  
      Returns
      -------
      pandas DataFrame, transformed features
      """
      from numba import get_num_threads, set_num_threads
  
      from sktime.transformations.panel.rocket._multirocket_multi_numba import (
          _transform,
      )
  
      if self.normalise:
          X = (X - X.mean(axis=-1, keepdims=True)) / (
              X.std(axis=-1, keepdims=True) + 1e-8
          )
  
      _X1 = np.diff(X, 1)
  
      # change n_jobs depended on value and existing cores
      prev_threads = get_num_threads()
      if self.n_jobs < 1 or self.n_jobs > multiprocessing.cpu_count():
          n_jobs = multiprocessing.cpu_count()
      else:
          n_jobs = self.n_jobs
      set_num_threads(n_jobs)
  
      X = _transform(
          X,
          _X1,
          self.parameter,
          self.parameter1,
          self.n_features_per_kernel,
      )
      X = np.nan_to_num(X)
  
      set_num_threads(prev_threads)
  
      return pd.DataFrame(X)
  
file_path: sktime/sktime/transformations/panel/rocket/_multirocket_multivariate.py
imports: import multiprocessing
  import numpy
  import pandas
  from sktime.transformations.base import BaseTransformer
label_desc: Use image node_id 3 for calling the MultiRocketMultivariate obj's underlying member method code with example usage: obj._transform(X, y) and returns: pd