class_docstr: ```
  Node preprocessing base class
  ```
class_docstr_tok: ["``","`","Node","preprocessing","base","class","``","`"]
docstr: ```
  preprocess validation nodes (transductive inference)
  node_ids (list):  list of node IDs that generator will yield
  ```
docstr_tok: ["``","`","preprocess","validation","nodes","(","transductive","inference",")","node_ids","(","list",")",":","list","of","node","IDs","that","generator","will","yield","``","`"]
code: def preprocess_valid(self, node_ids):
      """
      ```
      preprocess validation nodes (transductive inference)
      node_ids (list):  list of node IDs that generator will yield
      ```
      """
      if not self.ids_exist(node_ids):
          raise ValueError("node_ids must exist in self.df")
      if self.y_encoding is None:
          raise Exception(
              "Unset parameters. Are you sure you called preprocess_train first?"
          )
  
      # subset df for validation nodes
      df_val = self.df[self.df.index.isin(node_ids)]
  
      # one-hot-encode target
      val_targets = self.y_encoding.transform(
          df_val[["target"]].to_dict("records")
      )
  
      # import stellargraph
      try:
          import stellargraph as sg
          from stellargraph.mapper import GraphSAGENodeGenerator
      except:
          raise Exception(SG_ERRMSG)
      if version.parse(sg.__version__) < version.parse("0.8"):
          raise Exception(SG_ERRMSG)
  
      # return generator
      if self.G_sg is None:
          self.G_sg = sg.StellarGraph(
              self.G, node_features=self.df[self.feature_names]
          )
      generator = GraphSAGENodeGenerator(
          self.G_sg, U.DEFAULT_BS, [self.sampsize, self.sampsize]
      )
      val_gen = generator.flow(df_val.index, val_targets, shuffle=False)
      from .sg_wrappers import NodeSequenceWrapper
  
      return NodeSequenceWrapper(val_gen)
  
imports: from ..None import utils
  from ..imports import *
  from ..preprocessor import Preprocessor
label_desc: Use image node_id 8 for calling the NodePreprocessor obj's underlying member method code with example usage: obj.preprocess_valid(node_ids) and returns: NodeSequenceWrapper