class_docstr: An implementation of `"NetLSD" <https://arxiv.org/abs/1805.10712>`_
  from the KDD '18 paper "NetLSD: Hearing the Shape of a Graph". The procedure
  calculate the heat kernel trace of the normalized Laplacian matrix over a
  vector of time scales. If the matrix is large it switches to an approximation
  of the eigenvalues.
  
  Args:
      scale_min (float): Time scale interval minimum. Default is -2.0.
      scale_max (float): Time scale interval maximum. Default is 2.0.
      scale_steps (int): Number of steps in time scale. Default is 250.
      scale_approximations (int): Number of eigenvalue approximations. Default is 200.
      seed (int): Random seed value. Default is 42.
class_docstr_tok: ["An","implementation","of","`","``","NetLSD","''","<","https",":","\/\/arxiv.org\/abs\/1805.10712",">","`","_","from","the","KDD","'18","paper","``","NetLSD",":","Hearing","the","Shape","of","a","Graph","''",".","The","procedure","calculate","the","heat","kernel","trace","of","the","normalized","Laplacian","matrix","over","a","vector","of","time","scales",".","If","the","matrix","is","large","it","switches","to","an","approximation","of","the","eigenvalues",".","Args",":","scale_min","(","float",")",":","Time","scale","interval","minimum",".","Default","is","-2.0.","scale_max","(","float",")",":","Time","scale","interval","maximum",".","Default","is","2.0.","scale_steps","(","int",")",":","Number","of","steps","in","time","scale",".","Default","is","250.","scale_approximations","(","int",")",":","Number","of","eigenvalue","approximations",".","Default","is","200.","seed","(","int",")",":","Random","seed","value",".","Default","is","42","."]
docstr: Approximating the eigenvalues of the normalized Laplacian.
  
  Arg types:
      * **eigenvalues_lower** *(Numpy array)* - The smallest eigenvalues of the graph.
      * **eigenvalues_upper** *(Numpy array)* - The largest eigenvalues of the graph.
      * **number_of_nodes** *(int)* - The number of nodes in the graph.
  
  Return types:
      * **eigenvalues** *(Numpy array)* - The eigenvalues of the graph.
docstr_tok: ["Approximating","the","eigenvalues","of","the","normalized","Laplacian",".","Arg","types",":","*","*","*","eigenvalues_lower","*","*","*","(","Numpy","array",")","*","-","The","smallest","eigenvalues","of","the","graph",".","*","*","*","eigenvalues_upper","*","*","*","(","Numpy","array",")","*","-","The","largest","eigenvalues","of","the","graph",".","*","*","*","number_of_nodes","*","*","*","(","int",")","*","-","The","number","of","nodes","in","the","graph",".","Return","types",":","*","*","*","eigenvalues","*","*","*","(","Numpy","array",")","*","-","The","eigenvalues","of","the","graph","."]
code: def _updown_linear_approx(
      self, eigenvalues_lower, eigenvalues_upper, number_of_nodes
  ):
      """
      Approximating the eigenvalues of the normalized Laplacian.
  
      Arg types:
          * **eigenvalues_lower** *(Numpy array)* - The smallest eigenvalues of the graph.
          * **eigenvalues_upper** *(Numpy array)* - The largest eigenvalues of the graph.
          * **number_of_nodes** *(int)* - The number of nodes in the graph.
  
      Return types:
          * **eigenvalues** *(Numpy array)* - The eigenvalues of the graph.
      """
      nal = len(eigenvalues_lower)
      nau = len(eigenvalues_upper)
      eigenvalues = np.zeros(number_of_nodes)
      eigenvalues[:nal] = eigenvalues_lower
      eigenvalues[-nau:] = eigenvalues_upper
      eigenvalues[nal - 1 : -nau + 1] = np.linspace(
          eigenvalues_lower[-1],
          eigenvalues_upper[0],
          number_of_nodes - nal - nau + 2,
      )
      return eigenvalues
  
file_path: karateclub/karateclub/graph_embedding/netlsd.py
imports: import numpy
  import networkx
  from typing import List
  import scipy.sparse
  from karateclub.estimator import Estimator
label_desc: Use image node_id 3 for calling the NetLSD obj's underlying member method code with example usage: obj._updown_linear_approx(eigenvalues_lower, eigenvalues_upper, number_of_nodes) and returns: eigenvalues