Crate friedrich[−][src]
Expand description
Friedrich : Gaussian Process Regression
This libarie implements Gaussian Process Regression in Rust. Our goal is to provide a building block for other algorithms (such as Bayesian Optimization).
Gaussian process have both the ability to extract a lot of information from their training data and to return a prediction and an uncertainty on their prediction. Furthermore, they can handle non-linear phenomenons, take uncertainty on the inputs into account and encode a prior on the output.
All of those properties make them an algorithm of choice to perform regression when data is scarce or when having uncertainty bars on the ouput is a desirable property.
However, the o(n^3)
complexity of the algorithm makes the classical implementation unsuitable for large training datasets.
Functionalities
This implementation lets you :
- define a gaussian process with default parameters or using the builder pattern
- train it on multidimensional data
- fit the parameters (kernel, prior and noise) on the training data
- add additional samples efficiently (
O(n^2)
) and refit the process - predict the mean, variance and covariance matrix for given inputs
- sample the distribution at a given position
- save and load a trained model with serde
Inputs
Most methods of this library can currently work with the following input -> ouput
pairs :
Vec<f64> -> f64
a single, multidimensional, sampleVec<Vec<f64>> -> Vec<f64>
each inner vector is a training sampleDMatrix<f64> -> DVector<f64>
using a nalgebra matrix with one row per sampleArrayBase<f64, Ix1> -> f64
a single sample stored in a ndarray array (using thefriedrich_ndarray
feature)ArrayBase<f64, Ix2> -> Array1<f64>
each row is a sample (using thefriedrich_ndarray
feature)
See the Input
trait if you want to add you own input type.
Modules
Traits
Implemented by Input -> Output
type pairs
Type Definitions
matrix with arbitrary storage S: Storage<f64, Dynamic, Dynamic>
row vector with arbitrary storage S: Storage<f64, U1, Dynamic>
vector with arbitrary storage S: Storage<f64, Dynamic, U1>