• Stars
    star
    219
  • Rank 182,953 (Top 4 %)
  • Language
    Julia
  • License
    Other
  • Created over 4 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Abstract types and methods for Gaussian Processes.

AbstractGPs

Docs: stable Docs: dev CI Codecov Code Style: Blue ColPrac: Contributor's Guide on Collaborative Practices for Community Packages DOI

AbstractGPs.jl is a package that defines a low-level API for working with Gaussian processes (GPs), and basic functionality for working with them in the simplest cases. As such it is aimed more at developers and researchers who are interested in using it as a building block than end-users of GPs. You may want to go through the main API design documentation.

GP

Installation

AbstractGPs is an officially registered Julia package, so the following will install AbstractGPs using the Julia's package manager:

] add AbstractGPs

Example

# Import packages.
using AbstractGPs, Plots

# Generate toy synthetic data.
x = rand(10)
y = sin.(x)

# Define GP prior with Matern-3/2 kernel
f = GP(Matern32Kernel())

# Finite projection of `f` at inputs `x`.
# Added Gaussian noise with variance 0.001.
fx = f(x, 0.001)

# Log marginal probability of `y` under `f` at `x`.
# Quantity typically maximised to train hyperparameters.
logpdf(fx, y)

# Exact posterior given `y`. This is another GP.
p_fx = posterior(fx, y)

# Log marginal posterior predictive probability.
logpdf(p_fx(x), y)

# Plot posterior.
scatter(x, y; label="Data")
plot!(-0.5:0.001:1.5, p_fx; label="Posterior")

Related Julia packages

  • AbstractGPsMakie.jl - Plotting GPs with Makie.jl.
  • ApproximateGPs.jl - Approximate inference for GPs, both for sparse approximations and non-Gaussian likelihoods. Built on types which implement this package's APIs.
  • BayesianLinearRegressors.jl - Accelerated inference in GPs with a linear kernel. Built on types which implement this package's APIs.
  • GPLikelihoods.jl - Non-Gaussian likelihood functions to use with GPs.
  • KernelFunctions.jl - Kernel functions for machine learning.
  • Stheno.jl - Building probabilistic programmes involving GPs. Built on types which implement this package's APIs.
  • TemporalGPs.jl - Accelerated inference in GPs involving time. Built on types which implement this package's APIs.

Issues/Contributing

If you notice a problem or would like to contribute by adding more kernel functions or features please submit an issue.

More Repositories

1

Stheno.jl

Probabilistic Programming with Gaussian processes in Julia
Julia
340
star
2

KernelFunctions.jl

Julia package for kernel functions for machine learning
Julia
267
star
3

TemporalGPs.jl

Fast inference for Gaussian processes in problems involving time. Partly built on results from https://proceedings.mlr.press/v161/tebbutt21a.html
Julia
121
star
4

ParameterHandling.jl

Foundational tooling for handling collections of parameters in models
Julia
72
star
5

GPLikelihoods.jl

Provides likelihood functions for Gaussian Processes.
Julia
43
star
6

ApproximateGPs.jl

Approximations for Gaussian processes: sparse variational inducing point approximations, Laplace approximation, ...
Julia
35
star
7

BayesianLinearRegressors.jl

Bayesian Linear Regression in Julia
Julia
30
star
8

AugmentedGPLikelihoods.jl

Provide all functions needed to work with augmented likelihoods (conditionally conjugate with Gaussians)
Julia
20
star
9

InducingPoints.jl

Package for different inducing points selection methods
Julia
8
star
10

LinearMixingModels.jl

http://proceedings.mlr.press/v119/bruinsma20a.html
Julia
6
star
11

KernelSpectralDensities.jl

Julia
6
star
12

RandomFourierFeatures.jl

[WIP] Random Fourier Feature approximations for KernelFunctions.jl
Julia
3
star
13

EasyGPs.jl

Easy automatic fitting of JuliaGP models
Julia
3
star
14

AbstractGPsMakie.jl

Plots of Gaussian processes with AbstractGPs and Makie
Julia
2
star
15

JuliaGPsDocs.jl

General setup to generate examples for the JuliaGP packages
Julia
1
star
16

JuliaGaussianProcesses.github.io

Website for the JuliaGaussianProcesses organisation and its packages
HTML
1
star