ConditionedGaussianProcess¶
- class ConditionedGaussianProcess(*args)¶
Conditioned Gaussian process.
Warning
This class is experimental and likely to be modified in future releases. To use it, import the
openturns.experimental
submodule.- Parameters:
- gprResult
GaussianProcessRegressionResult
Structure that contains all the elements of Gaussian Process Regression computations.
- mesh
Mesh
Mesh
over which the domain
is discretized.
- gprResult
Methods
Accessor to the object's name.
Get a continuous realization.
Get the covariance model.
Get the description of the process.
getFuture
(*args)Prediction of the
future iterations of the process.
Get the dimension of the domain
.
getMarginal
(indices)Get the
marginal of the random process.
getMesh
()Get the mesh.
getName
()Accessor to the object's name.
Get the dimension of the domain
.
Return a realization of the process.
getSample
(size)Get
realizations of the process.
Get the used method for getRealization.
Get the time grid of observation of the process.
getTrend
()Get the trend function.
hasName
()Test if the object is named.
Test whether the process is composite or not.
isNormal
()Test whether the process is normal or not.
Test whether the process is stationary or not.
Tell if the process is trend stationary or not.
setDescription
(description)Set the description of the process.
setMesh
(mesh)Set the mesh.
setName
(name)Accessor to the object's name.
setSamplingMethod
(*args)Set the used method for getRealization.
setTimeGrid
(timeGrid)Set the time grid of observation of the process.
Notes
This class helps to generate fields from the conditioned gaussian process resulting from a Gaussian process regression algorithm.
Refer to the documentation of
GaussianProcessRegression
to get details on the notations.Examples
We consider the model
defined by
.
>>> import openturns as ot >>> import openturns.experimental as otexp >>> ot.RandomGenerator.SetSeed(0) >>> model = ot.SymbolicFunction(['x', 'y'], ['cos(0.5*x) + sin(y)'])
Then we define the train sample as a box with 8 levels on the x-axis and 5 levels on the y-axis.
>>> levels = [8.0, 5.0] >>> box = ot.Box(levels) >>> x_train = box.generate() >>> x_train *= 10 >>> y_train = model(x_train)
We define the covariance model as a
SquaredExponential
model:>>> dim = 2 >>> covarianceModel = ot.SquaredExponential([1.0, 1.0], [1.0])
We define the functions basis to estimate the trend: this basis only contains constant functions:
>>> basis = ot.ConstantBasisFactory(dim).build()
We estimate the Gaussian process regression, using first the class
GaussianProcessFitter
, then using the classGaussianProcessRegression
:>>> fitter_algo = otexp.GaussianProcessFitter(x_train, y_train, covarianceModel, basis) >>> fitter_algo.run() >>> fitter_result = fitter_algo.getResult() >>> gpr_algo = otexp.GaussianProcessRegression(fitter_result) >>> gpr_algo.run() >>> gpr_result = gpr_algo.getResult()
Now, we define the mesh on which the gconditionned gaussian process is generated:
>>> vertices = [[1.0, 0.0], [2.0, 0.0], [2.0, 1.0], [1.0, 1.0], [1.5, 0.5]] >>> simplices = [[0, 1, 4], [1, 2, 4], [2, 3, 4], [3, 0, 4]] >>> mesh2D = ot.Mesh(vertices, simplices) >>> process = otexp.ConditionedGaussianProcess(gpr_result, mesh2D)
We get a realization of the conditioned Gaussian process:
>>> realization = process.getRealization()
- __init__(*args)¶
- getClassName()¶
Accessor to the object’s name.
- Returns:
- class_namestr
The object class name (object.__class__.__name__).
- getContinuousRealization()¶
Get a continuous realization.
- Returns:
- realization
Function
According to the process, the continuous realizations are built:
either using a dedicated functional model if it exists: e.g. a functional basis process.
or using an interpolation from a discrete realization of the process on
: in dimension
, a linear interpolation and in dimension
, a piecewise constant function (the value at a given position is equal to the value at the nearest vertex of the mesh of the process).
- realization
- getCovarianceModel()¶
Get the covariance model.
- Returns:
- covarianceModel
CovarianceModel
Temporal covariance model
.
- covarianceModel
- getDescription()¶
Get the description of the process.
- Returns:
- description
Description
Description of the process.
- description
- getFuture(*args)¶
Prediction of the
future iterations of the process.
- Parameters:
- stepNumberint,
Number of future steps.
- sizeint,
, optional
Number of futures needed. Default is 1.
- stepNumberint,
- Returns:
- prediction
ProcessSample
orTimeSeries
future iterations of the process. If
, prediction is a
TimeSeries
. Otherwise, it is aProcessSample
.
- prediction
- getInputDimension()¶
Get the dimension of the domain
.
- Returns:
- nint
Dimension of the domain
:
.
- getMarginal(indices)¶
Get the
marginal of the random process.
- Parameters:
- kint or list of ints
Index of the marginal(s) needed.
- kint or list of ints
- Returns:
- marginals
Process
Process defined with marginal(s) of the random process.
- marginals
- getName()¶
Accessor to the object’s name.
- Returns:
- namestr
The name of the object.
- getOutputDimension()¶
Get the dimension of the domain
.
- Returns:
- dint
Dimension of the domain
.
- getRealization()¶
Return a realization of the process.
- Returns:
- realization
Field
A realization of the process.
- realization
- getSample(size)¶
Get
realizations of the process.
- Parameters:
- nint,
Number of realizations of the process needed.
- nint,
- Returns:
- processSample
ProcessSample
realizations of the random process. A process sample is a collection of fields which share the same mesh
.
- processSample
- getSamplingMethod()¶
Get the used method for getRealization.
- Returns:
- samplingMethodint
Used method for sampling.
Notes
Available parameters are :
0 (GaussianProcess.CHOLESKY) : Cholesky factor sampling (default method)
1 (GaussianProcess.HMAT) : H-Matrix method (if H-Mat available)
2 (GaussianProcess.GALLIGAOGIBBS) : Gibbs method (in dimension 1 only)
- getTimeGrid()¶
Get the time grid of observation of the process.
- Returns:
- timeGrid
RegularGrid
Time grid of a process when the mesh associated to the process can be interpreted as a
RegularGrid
. We check if the vertices of the mesh are scalar and are regularly spaced inbut we don’t check if the connectivity of the mesh is conform to the one of a regular grid (without any hole and composed of ordered instants).
- timeGrid
- getTrend()¶
Get the trend function.
- Returns:
- trend
TrendTransform
Trend function.
- trend
- hasName()¶
Test if the object is named.
- Returns:
- hasNamebool
True if the name is not empty.
- isComposite()¶
Test whether the process is composite or not.
- Returns:
- isCompositebool
True if the process is composite (built upon a function and a process).
- isNormal()¶
Test whether the process is normal or not.
- Returns:
- isNormalbool
True if the process is normal.
Notes
A stochastic process is normal if all its finite dimensional joint distributions are normal, which means that for all
and
, with
, there is
and
such that:
where
,
and
and
is the symmetric matrix:
A Gaussian process is entirely defined by its mean function
and its covariance function
(or correlation function
).
- isStationary()¶
Test whether the process is stationary or not.
- Returns:
- isStationarybool
True if the process is stationary.
Notes
A process
is stationary if its distribution is invariant by translation:
,
,
, we have:
- isTrendStationary()¶
Tell if the process is trend stationary or not.
- Returns:
- isTrendStationarybool
True if the process is trend stationary.
- setDescription(description)¶
Set the description of the process.
- Parameters:
- descriptionsequence of str
Description of the process.
- setName(name)¶
Accessor to the object’s name.
- Parameters:
- namestr
The name of the object.
- setSamplingMethod(*args)¶
Set the used method for getRealization.
Available parameters are :
0 (GaussianProcess.CHOLESKY) : Cholesky factor sampling (default method)
1 (GaussianProcess.HMAT) : H-Matrix method (if H-Mat available)
2 (GaussianProcess.GALLIGAOGIBBS) : Gibbs method (in dimension 1 only)
- Parameters:
- samplingMethodint
Fix a method for sampling.
- setTimeGrid(timeGrid)¶
Set the time grid of observation of the process.
- Returns:
- timeGrid
RegularGrid
Time grid of observation of the process when the mesh associated to the process can be interpreted as a
RegularGrid
. We check if the vertices of the mesh are scalar and are regularly spaced inbut we don’t check if the connectivity of the mesh is conform to the one of a regular grid (without any hole and composed of ordered instants).
- timeGrid
Examples using the class¶
Gaussian Process Regression : generate trajectories from the metamodel