# GaussianProcess¶

class probnum.randprocs.GaussianProcess(mean, cov)

Bases: RandomProcess[Union[_SupportsArray[dtype], _NestedSequence[_SupportsArray[dtype]], bool, int, float, complex, str, bytes, _NestedSequence[Union[bool, int, float, complex, str, bytes]]], ndarray]

Gaussian processes.

A Gaussian process is a continuous stochastic process which if evaluated at a finite set of inputs returns a random variable with a normal distribution. Gaussian processes are fully characterized by their mean and covariance function.

Parameters:
• mean – Mean function.

• cov – Covariance function.

RandomProcess

Random processes.

MarkovProcess

Random processes with the Markov property.

Examples

Define a Gaussian process with a zero mean function and RBF covariance function.

>>> import numpy as np
>>> from probnum.functions import Zero
>>> from probnum.randprocs import GaussianProcess
>>> mu = Zero(input_shape=())  # zero-mean function
>>> k = ExpQuad(input_shape=())  # RBF covariance function
>>> gp = GaussianProcess(mu, k)


Sample from the Gaussian process.

>>> x = np.linspace(-1, 1, 5)
>>> rng = np.random.default_rng(seed=42)
>>> gp.sample(rng, x)
array([-0.7539949 , -0.6658092 , -0.52972512,  0.0674298 ,  0.72066223])
>>> gp.cov.matrix(x)
array([[1.        , 0.8824969 , 0.60653066, 0.32465247, 0.13533528],
[0.8824969 , 1.        , 0.8824969 , 0.60653066, 0.32465247],
[0.60653066, 0.8824969 , 1.        , 0.8824969 , 0.60653066],
[0.32465247, 0.60653066, 0.8824969 , 1.        , 0.8824969 ],
[0.13533528, 0.32465247, 0.60653066, 0.8824969 , 1.        ]])


Attributes Summary

 cov Covariance function $$k(x_0, x_1)$$ of the random process. dtype Data type of (elements of) the random process evaluated at an input. input_ndim Syntactic sugar for len(input_shape). input_shape Shape of inputs to the random process. mean Mean function $$m(x) := \mathbb{E}[f(x)]$$ of the random process. output_ndim Syntactic sugar for len(output_shape). output_shape Shape of the random process evaluated at an input.

Methods Summary

 __call__(args) Evaluate the random process at a set of input arguments. marginal(args) Batch of random variables defining the marginal distributions at the inputs. push_forward(args, base_measure, sample) Transform samples from a base measure into samples from the random process. sample(rng[, args, size]) Sample paths from the random process. std(args) Standard deviation function. var(args) Variance function.

Attributes Documentation

cov

Covariance function $$k(x_0, x_1)$$ of the random process.

\begin{equation} k(x_0, x_1) := \mathbb{E} \left[ (f(x_0) - \mathbb{E}[f(x_0)]) (f(x_1) - \mathbb{E}[f(x_1)])^\top \right] \end{equation}
Raises:

NotImplementedError – If no covariance function was assigned to the random process.

dtype

Data type of (elements of) the random process evaluated at an input.

input_ndim

Syntactic sugar for len(input_shape).

input_shape

Shape of inputs to the random process.

mean

Mean function $$m(x) := \mathbb{E}[f(x)]$$ of the random process.

Raises:

NotImplementedError – If no mean function was assigned to the random process.

output_ndim

Syntactic sugar for len(output_shape).

output_shape

Shape of the random process evaluated at an input.

Methods Documentation

__call__(args)[source]

Evaluate the random process at a set of input arguments.

Parameters:

args (ArrayLike) – shape= batch_shape + input_shape – (Batch of) input(s) at which to evaluate the random process. Currently, we require batch_shape to have at most one dimension.

Returns:

shape= batch_shape + output_shape – Random process evaluated at the input(s).

Return type:

randvars.RandomVariable

marginal(args)

Batch of random variables defining the marginal distributions at the inputs.

Parameters:

args (InputType) – shape= batch_shape + input_shape – (Batch of) input(s) at which to evaluate the random process. Currently, we require batch_shape to have at most one dimension.

Return type:

randvars._RandomVariableList

push_forward(args, base_measure, sample)

Transform samples from a base measure into samples from the random process.

This function can be used to control sampling from the random process by explicitly passing samples from a base measure evaluated at the input arguments.

Parameters:
• args (InputType) – Input arguments.

• base_measure (Type[RandomVariable]) – Base measure. Given as a type of random variable.

• sample (ndarray) – shape= sample_shape + input_shape – (Batch of) input(s) at which to evaluate the random process. Currently, we require sample_shape to have at most one dimension.

Return type:

ndarray

sample(rng, args=None, size=())

Sample paths from the random process.

If no inputs are provided this function returns sample paths which are callables, otherwise random variables corresponding to the input locations are returned.

Parameters:
• rng (Generator) – Random number generator.

• args (InputType | None) – shape= size + input_shape – (Batch of) input(s) at which the sample paths will be evaluated. Currently, we require size to have at most one dimension. If None, sample paths, i.e. callables are returned.

• size (ShapeLike) – Size of the sample.

Raises:

NotImplementedError – General path sampling is currently not supported.

Return type:

Callable[[InputType], OutputType] | OutputType

std(args)

Standard deviation function.

Parameters:

args (InputType) – shape= batch_shape + input_shape – (Batch of) input(s) at which to evaluate the standard deviation function.

Returns:

shape= batch_shape + output_shape – Standard deviation of the process at args.

Return type:

OutputType

var(args)

Variance function.

Returns the variance function which is the value of the covariance function evaluated elementwise at args for each output dimension separately.

Parameters:

args (InputType) – shape= batch_shape + input_shape – (Batch of) input(s) at which to evaluate the variance function.

Returns:

shape= batch_shape + output_shape – Variance of the process at args.

Return type:

OutputType