[−][src]Module friedrich::gaussian_process
Gaussian process
// trains a gaussian process on a dataset of one dimension vectors let training_inputs = vec![vec![0.8], vec![1.2], vec![3.8], vec![4.2]]; let training_outputs = vec![3.0, 4.0, -2.0, -2.0]; let mut gp = GaussianProcess::default(training_inputs, training_outputs); // predicts the mean and variance of a single point let input = vec![1.]; let mean = gp.predict(&input); let var = gp.predict_variance(&input); println!("prediction: {} ± {}", mean, var.sqrt()); // makes several prediction let inputs = vec![vec![1.0], vec![2.0], vec![3.0]]; let outputs = gp.predict(&inputs); println!("predictions: {:?}", outputs); // updates the model let additional_inputs = vec![vec![0.], vec![1.], vec![2.], vec![5.]]; let additional_outputs = vec![2.0, 3.0, -1.0, -2.0]; let fit_prior = true; let fit_kernel = true; let fit_noise = true; let max_iter = 100; let convergence_fraction = 0.01; gp.add_samples(&additional_inputs, &additional_outputs); gp.fit_parameters(fit_prior, fit_kernel, fit_noise, max_iter, convergence_fraction); // samples from the distribution let new_inputs = vec![vec![1.0], vec![2.0]]; let sampler = gp.sample_at(&new_inputs); let mut rng = rand::thread_rng(); for i in 1..=5 { println!("sample {} : {:?}", i, sampler.sample(&mut rng)); }
Structs
GaussianProcess | A Gaussian process that can be used to make predictions based on its training data |
GaussianProcessBuilder | Builder to set the parameters of a gaussian process. |
MultivariateNormal | Multivariate Normal Distribution |