# -*- coding: utf-8 -*- # Author: Vincent Dubourg # (mostly translation, see implementation details) # License: BSD 3 clause """ The built-in regression models submodule for the gaussian_process module. """ import numpy as np def constant(x): """ Zero order polynomial (constant, p = 1) regression model. x --> f(x) = 1 Parameters ---------- x : array_like An array with shape (n_eval, n_features) giving the locations x at which the regression model should be evaluated. Returns ------- f : array_like An array with shape (n_eval, p) with the values of the regression model. """ x = np.asarray(x, dtype=np.float64) n_eval = x.shape[0] f = np.ones([n_eval, 1]) return f def linear(x): """ First order polynomial (linear, p = n+1) regression model. x --> f(x) = [ 1, x_1, ..., x_n ].T Parameters ---------- x : array_like An array with shape (n_eval, n_features) giving the locations x at which the regression model should be evaluated. Returns ------- f : array_like An array with shape (n_eval, p) with the values of the regression model. """ x = np.asarray(x, dtype=np.float64) n_eval = x.shape[0] f = np.hstack([np.ones([n_eval, 1]), x]) return f def quadratic(x): """ Second order polynomial (quadratic, p = n*(n-1)/2+n+1) regression model. x --> f(x) = [ 1, { x_i, i = 1,...,n }, { x_i * x_j, (i,j) = 1,...,n } ].T i > j Parameters ---------- x : array_like An array with shape (n_eval, n_features) giving the locations x at which the regression model should be evaluated. Returns ------- f : array_like An array with shape (n_eval, p) with the values of the regression model. """ x = np.asarray(x, dtype=np.float64) n_eval, n_features = x.shape f = np.hstack([np.ones([n_eval, 1]), x]) for k in range(n_features): f = np.hstack([f, x[:, k, np.newaxis] * x[:, k:]]) return f