class_docstr: An implementation of `"GeoScattering" <http://proceedings.mlr.press/v97/gao19e.html>`_
  from the ICML '19 paper "Geometric Scattering for Graph Data Analysis". The procedure
  uses scattering with wavelet transforms to create graph spectral descriptors. Moments of the
  wavelet transformed features are used as graph level features for the embedding.
  
  Args:
      order (int): Adjacency matrix powers. Default is 4.
      moments (int): Unnormalized moments considered. Default is 4.
      seed (int): Random seed value. Default is 42.
class_docstr_tok: ["An","implementation","of","`","``","GeoScattering","''","<","http",":","\/\/proceedings.mlr.press\/v97\/gao19e.html",">","`","_","from","the","ICML","'19","paper","``","Geometric","Scattering","for","Graph","Data","Analysis","''",".","The","procedure","uses","scattering","with","wavelet","transforms","to","create","graph","spectral","descriptors",".","Moments","of","the","wavelet","transformed","features","are","used","as","graph","level","features","for","the","embedding",".","Args",":","order","(","int",")",":","Adjacency","matrix","powers",".","Default","is","4.","moments","(","int",")",":","Unnormalized","moments","considered",".","Default","is","4.","seed","(","int",")",":","Random","seed","value",".","Default","is","42","."]
docstr: Calculating the node features.
  
  Arg types:
      * **graph** *(NetworkX graph)* - The graph of interest.
  
  Return types:
      * **X** *(NumPy array)* - The node features.
docstr_tok: ["Calculating","the","node","features",".","Arg","types",":","*","*","*","graph","*","*","*","(","NetworkX","graph",")","*","-","The","graph","of","interest",".","Return","types",":","*","*","*","X","*","*","*","(","NumPy","array",")","*","-","The","node","features","."]
code: def _create_node_feature_matrix(self, graph):
      """
      Calculating the node features.
  
      Arg types:
          * **graph** *(NetworkX graph)* - The graph of interest.
  
      Return types:
          * **X** *(NumPy array)* - The node features.
      """
      log_degree = np.array(
          [
              math.log(graph.degree(node) + 1)
              for node in range(graph.number_of_nodes())
          ]
      ).reshape(-1, 1)
      eccentricity = np.array(
          [
              nx.eccentricity(graph, node)
              for node in range(graph.number_of_nodes())
          ]
      ).reshape(-1, 1)
      clustering_coefficient = np.array(
          [
              nx.clustering(graph, node)
              for node in range(graph.number_of_nodes())
          ]
      ).reshape(-1, 1)
      X = np.concatenate(
          [log_degree, eccentricity, clustering_coefficient], axis=1
      )
      return X
  
imports: import math
  import numpy
  import networkx
  from typing import List
  import scipy.stats.mstats
  import scipy.sparse
  from karateclub.estimator import Estimator
label_desc: Use image node_id 5 for calling the GeoScattering obj's underlying member method code with example usage: obj._create_node_feature_matrix(graph) and returns: X