class_docstr: GCNJaccard preprocesses input graph via droppining dissimilar
  edges. See more details in
  Adversarial Examples on Graph Data: Deep Insights into Attack and Defense,
  https://arxiv.org/pdf/1903.01610.pdf.
class_docstr_tok: ["GCNJaccard","preprocesses","input","graph","via","droppining","dissimilar","edges",".","See","more","details","in","Adversarial","Examples","on","Graph","Data",":","Deep","Insights","into","Attack","and","Defense",",","https",":","\/\/arxiv.org\/pdf\/1903.01610.pdf","."]
code: def _transform(self, data):
      features = get_feature(data)
      adj = get_edges(data)  # edge list
      LOGGER.info(f"before modified: {adj.shape}")
      adj = to_adjacency_matrix(adj).numpy()  # adjacency matrix
      modified_adj = drop_dissimilar_edges(
          features, adj, self.threshold, self.binary_feature
      ).toarray()  # adjacency matrix
      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_jaccard.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 GCNJaccard obj's underlying member method code with example usage: obj._transform(data) and returns: data