libKriging gallery

Notebooks showing libKriging at work in Python, R, Octave and Julia, each compared with a reference (another package, an exact model, a known value). Click a card to view the executed notebook; Python notebooks can also be run in Colab or Binder, with the released pylibkriging.

Executed in CI against libKriging libKriging/libKriging@master (101f71e4a6), 2026-10-26 10:34 UTC · sources · 21 notebooks, checks: 5 FAIL, 42 WARN, 10 KNOWN, 1064 PASS

filter by tags
language
class
kernel
trend
objective
method
noise
warping
aggregation
compared to
topic
Python 35/36 passed

Kriging vs scikit-learn, SMT, OpenTURNS, GPy

How does libKriging compare with the Python GP packages, first as an implementation (same hyperparameters → same numbers), then as a tool (default fits: accuracy, calibration, cost) on 10 functions?

Reference. Scikit-learn, SMT, OpenTURNS and GPy.

PythonKrigingkernel: gausskernel: matern5_2compared to: scikit-learncompared to: SMTcompared to: OpenTURNScompared to: GPy
Python 69/77 passed

Kriging with method="vecchia" / "nystrom" — large n

Vecchia and Nyström approximations make Kriging affordable for large n; how much accuracy do they cost, and do they converge to the exact model as their size parameter grows?

Reference. The exact model at the same θ (limits m = n − 1 and k = n), and the exact fit.

PythonKrigingmethod: exactmethod: vecchiamethod: nystromtopic: large n
Python 19/21 passed

Kriging with noise (noise="nugget", known variances) — noisy observations

Kriging with noisy observations: an estimated homogeneous nugget, or known (heteroscedastic) noise variances, must recover the noise level and predict the noise-free function with calibrated intervals.

Reference. The true noise variance, replicate averaging, and the interpolating (noise-free) fit on the same data.

PythonKrigingnoise: nonenoise: nuggetnoise: variancestopic: noisy datatopic: calibration
Python 1 failed

Kriging — kernels × trends, interpolation, predict (covariance, derivatives)

The basic promise of noise-free Kriging, over the whole grid of kernels and trends: it interpolates the data, its predictive variance vanishes at the design points, its predicted derivatives are the derivatives of its prediction, and it is accurate on smooth 1D to 3D functions.

Reference. Finite differences of the prediction, the data themselves, and per-function Q² floors.

PythonKrigingkernel: gausskernel: expkernel: matern3_2kernel: matern5_2trend: constanttrend: lineartrend: interactivetrend: quadratictopic: interpolationtopic: derivatives
Python 21/22 passed

Kriging — moderate and high dimension: engineering functions, normalize, screening

From 6 to 20 inputs on engineering functions: accuracy, the effect of normalize on inputs in physical units, and the ability of the fitted ranges θ to tell influential inputs from inactive ones.

Reference. The same model on inputs rescaled by hand, and the known active inputs of the Welch function.

PythonKrigingkernel: matern5_2topic: high dimensiontopic: normalizetopic: screening
Python 2 failed

Kriging — objectives (LL, LOO, LMP), their gradients and optima

The three estimation criteria (likelihood, leave-one-out, marginal posterior) must be computed and differentiated correctly, and the fitted θ̂ must be an optimum of the criterion it maximises.

Reference. Finite differences of each criterion, explicit leave-one-out refits, and the criterion profile around θ̂.

PythonKrigingobjective: LLobjective: LOOobjective: LMPtopic: gradientstopic: optimization
Python 37/41 passed

Kriging — robustness: degenerate and adversarial inputs

What happens off the happy path: invalid, degenerate or ill-conditioned inputs must be rejected or handled, results must not depend on the units, and the prediction cost must grow linearly with the number of points.

Reference. Equivariance identities (rescaled inputs / outputs give rescaled results) and the O(q) cost of predict.

PythonKrigingtopic: robustnesstopic: invariancetopic: cost
Python 97/99 passed

Kriging — save/load, pickle, copy, accessors

A model must survive a round trip (file, pickle, copy) unchanged, and expose its settings and hyperparameters: for every noise model, objective and fit method of Kriging.

Reference. The original model: predictions and hyperparameters must be identical to the last bit (1e-12).

PythonKrigingobjective: LLobjective: LOOobjective: LMPmethod: exactmethod: vecchiamethod: nystromnoise: nonenoise: nuggetnoise: variancestopic: persistence
Python 12/12 passed

Kriging — scikit-learn estimators (pylibkriging.sklearn)

pylibkriging.sklearn makes Kriging a scikit-learn estimator, usable in pipelines, grid searches and cross-validation.

Reference. The native Kriging class on the same data (same predictions), and scikit-learn's estimator conventions.

PythonKrigingcompared to: scikit-learntopic: scikit-learn API
Python 51/54 passed

Kriging — update, simulate, update_simulate

Adding observations (update) and drawing conditional paths (simulate, update_simulate) are shortcuts: they must give what the long way gives.

Reference. A model fitted from scratch on all the data, and Monte Carlo moments against the predictive mean and covariance.

PythonKrigingtopic: updatetopic: conditional simulation
Python 22/24 passed

MLPKriging — deep kernel on a 10D function with a 2D structure

A deep kernel (an MLP feature map before the kernel) can find a low-dimensional structure that a per-axis kernel cannot: Branin of a 2D projection of 10 inputs.

Reference. Plain Kriging on the same data.

PythonMLPKrigingKrigingkernel: matern5_2topic: deep kerneltopic: dimension reduction
Python 71/71 passed

NestedKriging — aggregations, large n

NestedKriging splits a large design into groups and aggregates their predictions; how far is it from the exact predictor as the number of groups grows, and which aggregation is closest?

Reference. The exact predictor at the same θ (limit: 1 group), and the exact fit.

PythonNestedKrigingaggregation: NKaggregation: PoEaggregation: gPoEaggregation: BCMaggregation: rBCMtopic: large n
Python 49/49 passed

no model — the test functions against their published reference values

Every example of this gallery is only as good as its test functions: before fitting anything, each of the 21 functions is evaluated at points where its value is published, and its range and shape are plotted.

Reference. Published optima and nominal values (Virtual Library of Simulation Experiments, Surjanovic & Bingham).

Pythonnonetopic: test functions
Python 56/61 passed

WarpKriging — non-stationarity, categorical and ordinal inputs

Input warpings handle non-stationarity and categorical or ordinal inputs; each warping must beat, or at least match, plain Kriging where it is meant to help, without making the predictive variance overconfident.

Reference. Plain Kriging on the same data (accuracy and NLPD), and none warping = Kriging.

PythonWarpKrigingKrigingwarping: nonewarping: affinewarping: boxcoxwarping: kumaraswamywarping: neural_monowarping: categoricalwarping: ordinaltopic: non-stationaritytopic: categorical inputs
R 2 failed

Kriging vs DiceKriging and RobustGaSP

libKriging's Kriging follows DiceKriging: at the same hyperparameters it must give DiceKriging's numbers, and its default fit must be as accurate as the R references.

Reference. DiceKriging (exact equality) and RobustGaSP (accuracy, cost).

RKrigingkernel: gausskernel: expkernel: matern3_2kernel: matern5_2compared to: DiceKrigingcompared to: RobustGaSP
Octave not run

Kriging vs STK

The Octave/MATLAB reference toolbox, STK: at the same hyperparameters (Gaussian kernel) both must give the same predictor, and their default fits are compared.

Reference. STK (exact equality, then accuracy and cost).

OctaveKrigingkernel: gausskernel: matern5_2compared to: STK
Julia 3/6 passed

Kriging vs GaussianProcesses.jl

JLibKriging against the main Julia GP package: default fits on the shared datasets.

Reference. GaussianProcesses.jl (accuracy and cost).

JuliaKrigingkernel: matern5_2compared to: GaussianProcesses.jl
Python no checks

all classes — cross-binding consistency: the Python reference

All bindings wrap the same C++ library: on the same data with the same options, they must give the same numbers, for every model class and fit method. This notebook writes the Python values, the reference of the comparison.

Reference. The R, Octave and Julia notebooks cross-binding_all-classes_*, compared by tools/report.py.

PythonKrigingNestedKrigingWarpKrigingMLPKrigingkernel: matern5_2objective: LLmethod: exactmethod: vecchiamethod: nystromnoise: nonenoise: nuggetnoise: varianceswarping: kumaraswamyaggregation: NKtopic: cross-binding
R 3/3 passed

all classes — cross-binding consistency: the R side

The R side of the cross-binding protocol: rlibkriging must give the numbers of pylibkriging on the same data, for every model class and fit method.

Reference. The Python values (cross-binding-reference_all-classes_python.ipynb), compared by tools/report.py.

RKrigingNestedKrigingWarpKrigingMLPKrigingkernel: matern5_2objective: LLmethod: exactmethod: vecchiamethod: nystromnoise: nonenoise: nuggetnoise: varianceswarping: kumaraswamyaggregation: NKtopic: cross-binding
Octave 3/3 passed

all classes — cross-binding consistency: the Octave side

The Octave side of the cross-binding protocol: mLibKriging must give the numbers of pylibkriging on the same data, for every model class and fit method.

Reference. The Python values (cross-binding-reference_all-classes_python.ipynb), compared by tools/report.py.

OctaveKrigingNestedKrigingWarpKrigingMLPKrigingkernel: matern5_2objective: LLmethod: exactmethod: vecchiamethod: nystromnoise: nonenoise: nuggetnoise: varianceswarping: kumaraswamyaggregation: NKtopic: cross-binding
Julia 3/3 passed

all classes — cross-binding consistency: the Julia side

The Julia side of the cross-binding protocol: JLibKriging must give the numbers of pylibkriging on the same data, for every model class and fit method.

Reference. The Python values (cross-binding-reference_all-classes_python.ipynb), compared by tools/report.py.

JuliaKrigingNestedKrigingWarpKrigingMLPKrigingkernel: matern5_2objective: LLmethod: exactmethod: vecchiamethod: nystromnoise: nonenoise: nuggetnoise: varianceswarping: kumaraswamyaggregation: NKtopic: cross-binding