class_docstr: An implementation of `"NEU" <https://www.ijcai.org/Proceedings/2017/0544.pdf>`_
  from the IJCAI 17 paper "Fast Network Embedding Enhancement via High Order Proximity Approximation".
  The procedure uses an arbitrary embedding and augments it by higher order proximities with a recursive
  meta learning algorithm.
  
  Args:
      L1 (float): Weight of lower order proximities. Defauls is 0.5
      L2 (float): Weight of higher order proximities. Default is 0.25.
      T (int): Number of iterations. Default is 1.
      seed (int): Random seed value. Default is 42.
docstr: Performs the Network Embedding Update on the original embedding.
  Args:
      original_embedding (Numpy array): An array containing an embedding.
      graph (NetworkX graph): The embedded graph.
  
  Return types:
      embedding (Numpy array): An array containing the updated embedding.
docstr_tok: ["Performs","the","Network","Embedding","Update","on","the","original","embedding",".","Args",":","original_embedding","(","Numpy","array",")",":","An","array","containing","an","embedding",".","graph","(","NetworkX","graph",")",":","The","embedded","graph",".","Return","types",":","embedding","(","Numpy","array",")",":","An","array","containing","the","updated","embedding","."]
code: def _update_embedding(self, graph, original_embedding):
      r"""Performs the Network Embedding Update on the original embedding.
      Args:
          original_embedding (Numpy array): An array containing an embedding.
          graph (NetworkX graph): The embedded graph.
  
      Return types:
          embedding (Numpy array): An array containing the updated embedding.
      """
      embedding = self._normalize_embedding(original_embedding)
      adjacency = nx.adjacency_matrix(
          graph, nodelist=range(graph.number_of_nodes())
      )
      normalized_adjacency = normalize(adjacency, norm="l1", axis=1)
      for _ in range(self.iterations):
          embedding = (
              embedding
              + self.L1 * (normalized_adjacency @ embedding)
              + self.L2
              * (
                  normalized_adjacency
                  @ (normalized_adjacency @ embedding)
              )
          )
      return embedding
  
file_path: karateclub/karateclub/node_embedding/meta/neu.py
imports: import numpy
  import networkx
  from sklearn.preprocessing import normalize
  from karateclub.estimator import Estimator
label_desc: Use image node_id 3 for calling the NEU obj's underlying member method code with example usage: obj._update_embedding(graph, original_embedding) and returns: embedding