def predict_derivatives(self, x, kx): """ Predict the dy_dx derivatives at a set of points. Parameters ---------- x : np.ndarray[n, nx] or np.ndarray[n] Input values for the prediction points. kx : int The 0-based index of the input variable with respect to which derivatives are desired. Returns ------- dy_dx : np.ndarray[n, ny] Derivatives. """ check_support(self, 'derivatives') x = check_2d_array(x, 'x') check_nx(self.nx, x) n = x.shape[0] self.printer.active = self.options['print_global'] and self.options[ 'print_prediction'] if self.name == 'MixExp': # Mixture of experts model self.printer._title('Evaluation of the Mixture of experts') else: self.printer._title('Evaluation') self.printer(' %-12s : %i' % ('# eval points.', n)) self.printer() #Evaluate the unknown points using the specified model-method with self.printer._timed_context('Predicting', key='prediction'): y = self._predict_derivatives(x, kx) time_pt = self.printer._time('prediction')[-1] / n self.printer() self.printer('Prediction time/pt. (sec) : %10.7f' % time_pt) self.printer() return y.reshape((n, self.ny))
def predict_variances(self, x): """ Predict the variances at a set of points. Parameters ---------- x : np.ndarray[nt, nx] or np.ndarray[nt] Input values for the prediction points. Returns ------- s2 : np.ndarray[nt, ny] Variances. """ check_support(self, "variances") check_nx(self.nx, x) n = x.shape[0] s2 = self._predict_variances(x) return s2.reshape((n, self.ny))
def predict_derivatives(self, x: np.ndarray, kx: int) -> np.ndarray: """ Predict the dy_dx derivatives at a set of points. Parameters ---------- x : np.ndarray[nt, nx] or np.ndarray[nt] Input values for the prediction points. kx : int The 0-based index of the input variable with respect to which derivatives are desired. Returns ------- dy_dx : np.ndarray[nt, ny] Derivatives. """ check_support(self, "derivatives") x = ensure_2d_array(x, "x") check_nx(self.nx, x) n = x.shape[0] self.printer.active = ( self.options["print_global"] and self.options["print_prediction"] ) if self.name == "MixExp": # Mixture of experts model self.printer._title("Evaluation of the Mixture of experts") else: self.printer._title("Evaluation") self.printer(" %-12s : %i" % ("# eval points.", n)) self.printer() # Evaluate the unknown points using the specified model-method with self.printer._timed_context("Predicting", key="prediction"): y = self._predict_derivatives(x, kx) time_pt = self.printer._time("prediction")[-1] / n self.printer() self.printer("Prediction time/pt. (sec) : %10.7f" % time_pt) self.printer() return y.reshape((n, self.ny))
def predict_output_derivatives(self, x): """ Predict the derivatives dy_dyt at a set of points. Parameters ---------- x : np.ndarray[nt, nx] or np.ndarray[nt] Input values for the prediction points. Returns ------- dy_dyt : dict of np.ndarray[nt, nt] Dictionary of output derivatives. Key is None for derivatives wrt yt and kx for derivatives wrt dyt_dxt. """ check_support(self, "output_derivatives") check_nx(self.nx, x) dy_dyt = self._predict_output_derivatives(x) return dy_dyt
def predict_variance_derivatives(self, x): """ Predict the derivation of the variance at a point Parameters: ----------- x : np.ndarray Input value for the prediction point. Returns: -------- derived_variance: np.ndarray The jacobian of the variance """ x = ensure_2d_array(x, "x") check_support(self, "variance_derivatives") check_nx(self.nx, x) n = x.shape[0] self.printer.active = ( self.options["print_global"] and self.options["print_prediction"] ) if self.name == "MixExp": # Mixture of experts model self.printer._title("Evaluation of the Mixture of experts") else: self.printer._title("Evaluation") self.printer(" %-12s : %i" % ("# eval points.", n)) self.printer() # Evaluate the unknown points using the specified model-method with self.printer._timed_context("Predicting", key="prediction"): y = self._predict_variance_derivatives(x) time_pt = self.printer._time("prediction")[-1] / n self.printer() self.printer("Prediction time/pt. (sec) : %10.7f" % time_pt) self.printer() return y
def predict_values(self, x): """ Predict the output values at a set of points. Parameters ---------- x : np.ndarray[n, nx] or np.ndarray[n] Input values for the prediction points. Returns ------- y : np.ndarray[n, ny] Output values at the prediction points. """ x = check_2d_array(x, 'x') check_nx(self.nx, x) n = x.shape[0] self.printer.active = self.options['print_global'] and self.options[ 'print_prediction'] if self.name == 'MixExp': # Mixture of experts model self.printer._title('Evaluation of the Mixture of experts') else: self.printer._title('Evaluation') self.printer(' %-12s : %i' % ('# eval points.', n)) self.printer() #Evaluate the unknown points using the specified model-method with self.printer._timed_context('Predicting', key='prediction'): y = self._predict_values(x) time_pt = self.printer._time('prediction')[-1] / n self.printer() self.printer('Prediction time/pt. (sec) : %10.7f' % time_pt) self.printer() return y.reshape((n, self.ny))
def predict_values(self, x: np.ndarray) -> np.ndarray: """ Predict the output values at a set of points. Parameters ---------- x : np.ndarray[nt, nx] or np.ndarray[nt] Input values for the prediction points. Returns ------- y : np.ndarray[nt, ny] Output values at the prediction points. """ x = ensure_2d_array(x, "x") check_nx(self.nx, x) n = x.shape[0] x2 = np.copy(x) self.printer.active = ( self.options["print_global"] and self.options["print_prediction"] ) if self.name == "MixExp": # Mixture of experts model self.printer._title("Evaluation of the Mixture of experts") else: self.printer._title("Evaluation") self.printer(" %-12s : %i" % ("# eval points.", n)) self.printer() # Evaluate the unknown points using the specified model-method with self.printer._timed_context("Predicting", key="prediction"): y = self._predict_values(x2) time_pt = self.printer._time("prediction")[-1] / n self.printer() self.printer("Prediction time/pt. (sec) : %10.7f" % time_pt) self.printer() return y.reshape((n, self.ny))