class_docstr: An implementation of `"GraphWave" <https://dl.acm.org/citation.cfm?id=2806512>`_
  from the KDD '18 paper "Learning Structural Node Embeddings Via Diffusion Wavelets".
  The procedure first calculates the graph wavelets using a heat kernel. The wavelets
  are treated as probability distributions over nodes from a source node. Using these
  the characteristic function is evaluated at certain gird points to learn structural
  node embeddings of the vertices.
  
  Args:
      sample_number (int): Number of evaluation points. Default is 200.
      step_size (float): Grid point step size. Default is 0.1.
      heat_coefficient (float): Heat kernel coefficient. Default is 1.0.
      approximation (int): Chebyshev polynomial order. Default is 100.
      mechanism (str): Wavelet calculation method one of:
                       (:obj:`"exact"`, :obj:`"approximate"`). Default is 'approximate'.
      switch (int): Vertex cardinality when the wavelet calculation method switches to approximation. Default is 1000.
      seed (int): Random seed value. Default is 42.
code: def __init__(
      self,
      sample_number: int = 200,
      step_size: float = 0.1,
      heat_coefficient: float = 1.0,
      approximation: int = 100,
      mechanism: str = "approximate",
      switch: int = 1000,
      seed: int = 42,
  ):
      self.sample_number = sample_number
      self.step_size = step_size
      self.heat_coefficient = heat_coefficient
      self.approximation = approximation
      self.mechanism = mechanism
      self.switch = switch
      self.seed = seed
  
file_path: karateclub/karateclub/node_embedding/structural/graphwave.py
imports: import pygsp
  import numpy
  import networkx
  from karateclub.estimator import Estimator
label_desc: Use image node_id 1 to create a new GraphWave object from inherited base classes: Estimator with example: obj = GraphWave(sample_number, step_size, heat_coefficient, approximation, mechanism, switch, seed)