class_docstr: GCNSVD uses Truncated SVD as preprocessing.See more details in All You Need Is Low (Rank): Defending
  Against Adversarial Attacks on Graphs,
  https://dl.acm.org/doi/abs/10.1145/3336191.3371789.
class_docstr_tok: ["GCNSVD","uses","Truncated","SVD","as","preprocessing.See","more","details","in","All","You","Need","Is","Low","(","Rank",")",":","Defending","Against","Adversarial","Attacks","on","Graphs",",","https",":","\/\/dl.acm.org\/doi\/abs\/10.1145\/3336191.3371789","."]
code: def _transform(self, data):
      adj = get_edges(data)  # edge list
      LOGGER.info(f"before modified: {adj.shape}")
      adj = to_adjacency_matrix(adj).numpy()  # adjacency matrix
      modified_adj = truncatedSVD(adj, self.k)  # adjacency matrix
      modified_adj = (modified_adj > self.threshold).astype(int)
      modified_adj = to_adjacency_list(
          torch.Tensor(modified_adj)
      )  # edge list
      LOGGER.info(f"after modified: {modified_adj.shape}")
      set_edges(data, modified_adj)
      return data
  
file_path: AutoGL/autogl/module/preprocessing/structure_engineering/_gcn_svd.py
imports: import scipy.sparse
  import numpy
  from numba import njit
  from .._data_preprocessor_registry import DataPreprocessorUniversalRegistry
  from ._structure_engineer import StructureEngineer, get_feature, get_edges, set_edges, to_adjacency_list, to_adjacency_matrix, LOGGER
  import torch
label_desc: Use image node_id 2 for calling the GCNSVD obj's underlying member method code with example usage: obj._transform(data) and returns: data