class_docstr: Any feature funcion object should inherit BaseFeature,
  which provides basic transformations and composing operation for feature
  engineering. Basic transformations include data type adjusting(tensor or numpy),
  complementing necessary attributes for future transform. Any subclass needs
  to overload methods ``_func`` and ``_transform`` to implement feature transformation.
  For specific needs, you may want to overload methods ``_preprocess`` and ``_postprocess``
  to enable specific processing before and after ``_transform`` .
  
  Parameters
  ----------
  pipe : list
      stores pipeline of ``BaseFeature``.
  data_t: str
      represents the data type needed for this transform, where 'tensor' accounts for ``torch.Tensor``,
      'np' for ``numpy.array`` and 'nx' for ``networkx``. When ``data_t`` values 'nx', then a ``networkx.DiGraph`` will
      be added to data as data.G .
  multigraph : bool
      determine whether it supports dataset with multiple graphs
  subgraph : bool
      determine whether it extracts subgraph features.
code: def _fit_transform(self, data):
      self._fit(data)
      return self._transform(data)
  
imports: from operator import xor
  from .utils import data_is_tensor, data_tensor2np, data_np2tensor
  import numpy
  import copy
  from torch_geometric.utils.convert import to_networkx
  from torch.utils.data import Dataset
  import torch
  from ...utils import get_logger
label_desc: Use image node_id 11 for calling the BaseFeature obj's underlying member method code with example usage: obj._fit_transform(data) and returns: self