class_docstr: Represents an post nonlinear FCM, i.e. models of the form:
      Y = g(f(X) + N),
  where X are parent nodes of the target node Y, f an arbitrary prediction model expecting inputs from the
  parents X, N a noise variable and g an invertible function.
class_docstr_tok: ["Represents","an","post","nonlinear","FCM",",","i.e",".","models","of","the","form",":","Y","=","g","(","f","(","X",")","+","N",")",",","where","X","are","parent","nodes","of","the","target","node","Y",",","f","an","arbitrary","prediction","model","expecting","inputs","from","the","parents","X",",","N","a","noise","variable","and","g","an","invertible","function","."]
docstr: Draws samples from the noise distribution N.
  
  :param num_samples: Number of noise samples.
  :return: A numpy array containing num_samples samples from the noise.
docstr_tok: ["Draws","samples","from","the","noise","distribution","N.",":","param","num_samples",":","Number","of","noise","samples",".",":","return",":","A","numpy","array","containing","num_samples","samples","from","the","noise","."]
code: def draw_noise_samples(self, num_samples: int) -> np.ndarray:
      """Draws samples from the noise distribution N.
  
      :param num_samples: Number of noise samples.
      :return: A numpy array containing num_samples samples from the noise.
      """
      return self._noise_model.draw_samples(num_samples)
  
imports: import copy
  from abc import ABC, abstractmethod
  from typing import List, Optional
  import numpy
  from dowhy.gcm.ml import ClassificationModel, PredictionModel
  from dowhy.gcm.ml.regression import InvertibleFunction, SklearnRegressionModel
  from dowhy.gcm.util.general import is_categorical, is_discrete, shape_into_2d
label_desc: Use image node_id 4 for calling the PostNonlinearModel obj's underlying member method code with example usage: obj.draw_noise_samples(num_samples) and returns: self