class_docstr: An implementation of `"Diff2Vec" <http://homepages.inf.ed.ac.uk/s1668259/papers/sequence.pdf>`_
  from the CompleNet '18 paper "Diff2Vec: Fast Sequence Based Embedding with Diffusion Graphs".
  The procedure creates diffusion trees from every source node in the graph. These graphs are linearized
  by a directed Eulerian walk, the walks are used for running the skip-gram algorithm the learn node
  level neighbourhood based embeddings.
  
  Args:
      diffusion_number (int): Number of diffusions. Default is 10.
      diffusion_cover (int): Number of nodes in diffusion. Default is 80.
      dimensions (int): Dimensionality of embedding. Default is 128.
      workers (int): Number of cores. Default is 4.
      window_size (int): Matrix power order. Default is 5.
      epochs (int): Number of epochs. Default is 1.
      use_hierarchical_softmax (bool): Whether to use hierarchical softmax or negative sampling to train the model. Default is True.
      number_of_negative_samples (int): Number of negative nodes to sample (usually between 5-20). If set to 0, no negative sampling is used. Default is 5.
      learning_rate (float): HogWild! learning rate. Default is 0.05.
      min_count (int): Minimal count of node occurrences. Default is 1.
      seed (int): Random seed value. Default is 42.
code: def __init__(
      self,
      diffusion_number: int = 10,
      diffusion_cover: int = 80,
      dimensions: int = 128,
      workers: int = 4,
      window_size: int = 5,
      epochs: int = 1,
      use_hierarchical_softmax: bool = True,
      number_of_negative_samples: int = 5,
      learning_rate: float = 0.05,
      min_count: int = 1,
      seed: int = 42,
  ):
      self.diffusion_number = diffusion_number
      self.diffusion_cover = diffusion_cover
      self.dimensions = dimensions
      self.workers = workers
      self.window_size = window_size
      self.epochs = epochs
      self.use_hierarchical_softmax = use_hierarchical_softmax
      self.number_of_negative_samples = number_of_negative_samples
      self.learning_rate = learning_rate
      self.min_count = min_count
      self.seed = seed
  
file_path: karateclub/karateclub/node_embedding/neighbourhood/diff2vec.py
imports: import numpy
  import networkx
  from gensim.models.word2vec import Word2Vec
  from karateclub.utils.diffuser import EulerianDiffuser
  from karateclub.estimator import Estimator
label_desc: Use image node_id 1 to create a new Diff2Vec object from inherited base classes: Estimator with example: obj = Diff2Vec(diffusion_number, diffusion_cover, dimensions, workers, window_size, epochs, use_hierarchical_softmax, number_of_negative_samples, learning_rate, min_count, seed)