{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# How to fit a Gaussian Process\n",
"\n",
"In this tutorial we will learn, how to fit a Gaussian process to noisy data points."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import bask\n",
"from bask import BayesGPR\n",
"plt.style.use('bmh')\n",
"colors = plt.cm.get_cmap(\"Set1\").colors"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Generate the dataset\n",
"First we start by simulating our 1d toy dataset:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"rand = np.random.RandomState(123)\n",
"n_points = 100\n",
"noise = 1.\n",
"frequency = 3.\n",
"X = rand.uniform(-1, 1, size=n_points)[:, None]\n",
"y = np.sin(X * frequency).flatten() + rand.randn(n_points) * noise"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"application/pdf": "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L3gKL3kgXQovVHlwZSAvRW5jb2RpbmcgPj4KL0ZpcnN0Q2hhciAwIC9Gb250QkJveCBbIC0xMDIxIC00NjMgMTc5NCAxMjMzIF0gL0ZvbnREZXNjcmlwdG9yIDE0IDAgUgovRm9udE1hdHJpeCBbIDAuMDAxIDAgMCAwLjAwMSAwIDAgXSAvTGFzdENoYXIgMjU1IC9OYW1lIC9EZWphVnVTYW5zCi9TdWJ0eXBlIC9UeXBlMyAvVHlwZSAvRm9udCAvV2lkdGhzIDEzIDAgUiA+PgplbmRvYmoKMTQgMCBvYmoKPDwgL0FzY2VudCA5MjkgL0NhcEhlaWdodCAwIC9EZXNjZW50IC0yMzYgL0ZsYWdzIDMyCi9Gb250QkJveCBbIC0xMDIxIC00NjMgMTc5NCAxMjMzIF0gL0ZvbnROYW1lIC9EZWphVnVTYW5zIC9JdGFsaWNBbmdsZSAwCi9NYXhXaWR0aCAxMzQyIC9TdGVtViAwIC9UeXBlIC9Gb250RGVzY3JpcHRvciAvWEhlaWdodCAwID4+CmVuZG9iagoxMyAwIG9iagpbIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwCjYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMzE4IDQwMSA0NjAgODM4IDYzNgo5NTAgNzgwIDI3NSAzOTAgMzkwIDUwMCA4MzggMzE4IDM2MSAzMTggMzM3IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYKNjM2IDYzNiAzMzcgMzM3IDgzOCA4MzggODM4IDUzMSAxMDAwIDY4NCA2ODYgNjk4IDc3MCA2MzIgNTc1IDc3NSA3NTIgMjk1CjI5NSA2NTYgNTU3IDg2MyA3NDggNzg3IDYwMyA3ODcgNjk1IDYzNSA2MTEgNzMyIDY4NCA5ODkgNjg1IDYxMSA2ODUgMzkwIDMzNwozOTAgODM4IDUwMCA1MDAgNjEzIDYzNSA1NTAgNjM1IDYxNSAzNTIgNjM1IDYzNCAyNzggMjc4IDU3OSAyNzggOTc0IDYzNCA2MTIKNjM1IDYzNSA0MTEgNTIxIDM5MiA2MzQgNTkyIDgxOCA1OTIgNTkyIDUyNSA2MzYgMzM3IDYzNiA4MzggNjAwIDYzNiA2MDAgMzE4CjM1MiA1MTggMTAwMCA1MDAgNTAwIDUwMCAxMzQyIDYzNSA0MDAgMTA3MCA2MDAgNjg1IDYwMCA2MDAgMzE4IDMxOCA1MTggNTE4CjU5MCA1MDAgMTAwMCA1MDAgMTAwMCA1MjEgNDAwIDEwMjMgNjAwIDUyNSA2MTEgMzE4IDQwMSA2MzYgNjM2IDYzNiA2MzYgMzM3CjUwMCA1MDAgMTAwMCA0NzEgNjEyIDgzOCAzNjEgMTAwMCA1MDAgNTAwIDgzOCA0MDEgNDAxIDUwMCA2MzYgNjM2IDMxOCA1MDAKNDAxIDQ3MSA2MTIgOTY5IDk2OSA5NjkgNTMxIDY4NCA2ODQgNjg0IDY4NCA2ODQgNjg0IDk3NCA2OTggNjMyIDYzMiA2MzIgNjMyCjI5NSAyOTUgMjk1IDI5NSA3NzUgNzQ4IDc4NyA3ODcgNzg3IDc4NyA3ODcgODM4IDc4NyA3MzIgNzMyIDczMiA3MzIgNjExIDYwNQo2MzAgNjEzIDYxMyA2MTMgNjEzIDYxMyA2MTMgOTgyIDU1MCA2MTUgNjE1IDYxNSA2MTUgMjc4IDI3OCAyNzggMjc4IDYxMiA2MzQKNjEyIDYxMiA2MTIgNjEyIDYxMiA4MzggNjEyIDYzNCA2MzQgNjM0IDYzNCA1OTIgNjM1IDU5MiBdCmVuZG9iagoxNiAwIG9iago8PCAvTiAxNyAwIFIgL2EgMTggMCBSIC9kIDE5IDAgUiAvZiAyMCAwIFIgL2ZpdmUgMjEgMCBSIC9pIDIyIDAgUgovbyAyNCAwIFIgL29uZSAyNSAwIFIgL3BhcmVubGVmdCAyNiAwIFIgL3BhcmVucmlnaHQgMjcgMCBSIC9wZXJpb2QgMjggMCBSCi9zIDI5IDAgUiAvc2V2ZW4gMzAgMCBSIC9zcGFjZSAzMSAwIFIgL3QgMzIgMCBSIC90aHJlZSAzMyAwIFIgL3R3byAzNCAwIFIKL3ggMzUgMCBSIC95IDM2IDAgUiAvemVybyAzNyAwIFIgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL0YxIDE1IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvQTEgPDwgL0NBIDAgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PgovQTIgPDwgL0NBIDEgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PgovQTMgPDwgL0NBIDAuOCAvVHlwZSAvRXh0R1N0YXRlIC9jYSAwLjggPj4gPj4KZW5kb2JqCjUgMCBvYmoKPDwgPj4KZW5kb2JqCjYgMCBvYmoKPDwgPj4KZW5kb2JqCjcgMCBvYmoKPDwgL0RlamFWdVNhbnMtbWludXMgMjMgMCBSIC9NMCAxMiAwIFIgPj4KZW5kb2JqCjEyIDAgb2JqCjw8IC9CQm94IFsgLTMuNSAtMy41IDMuNSAzLjUgXSAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDEzMQovU3VidHlwZSAvRm9ybSAvVHlwZSAvWE9iamVjdCA+PgpzdHJlYW0KeJxtkEEOhCAMRfc9RS/wSUtFZevSa7iZTOL9twNxQEzdNNC+PH5R/pLwTqXA+CQJS06z5HrTkNK6TIwY5tWyKMegUS3WznU4qM/QcGN0i7EUptTW6Hijm+k23pM/+rBZIUY/HA6vhHsWQyZcKTEGh98LL9vD/xGeXtTAH6KNfmNaQ/0KZW5kc3RyZWFtCmVuZG9iagoyIDAgb2JqCjw8IC9Db3VudCAxIC9LaWRzIFsgMTAgMCBSIF0gL1R5cGUgL1BhZ2VzID4+CmVuZG9iagozOCAwIG9iago8PCAvQ3JlYXRpb25EYXRlIChEOjIwMjAwMzA3MjE1MzM3KzAyJzAwJykKL0NyZWF0b3IgKG1hdHBsb3RsaWIgMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZykKL1Byb2R1Y2VyIChtYXRwbG90bGliIHBkZiBiYWNrZW5kIDMuMS4zKSA+PgplbmRvYmoKeHJlZgowIDM5CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNiAwMDAwMCBuIAowMDAwMDEyMTczIDAwMDAwIG4gCjAwMDAwMTE2MzggMDAwMDAgbiAKMDAwMDAxMTY3MCAwMDAwMCBuIAowMDAwMDExODEyIDAwMDAwIG4gCjAwMDAwMTE4MzMgMDAwMDAgbiAKMDAwMDAxMTg1NCAwMDAwMCBuIAowMDAwMDAwMDY1IDAwMDAwIG4gCjAwMDAwMDAzOTkgMDAwMDAgbiAKMDAwMDAwMDIwOCAwMDAwMCBuIAowMDAwMDA0NzY4IDAwMDAwIG4gCjAwMDAwMTE5MTEgMDAwMDAgbiAKMDAwMDAxMDMxOSAwMDAwMCBuIAowMDAwMDEwMTE5IDAwMDAwIG4gCjAwMDAwMDk2NzQgMDAwMDAgbiAKMDAwMDAxMTM3MiAwMDAwMCBuIAowMDAwMDA0Nzg5IDAwMDAwIG4gCjAwMDAwMDQ5MzYgMDAwMDAgbiAKMDAwMDAwNTMxMyAwMDAwMCBuIAowMDAwMDA1NjEzIDAwMDAwIG4gCjAwMDAwMDU4MTkgMDAwMDAgbiAKMDAwMDAwNjEzOSAwMDAwMCBuIAowMDAwMDA2Mjc5IDAwMDAwIG4gCjAwMDAwMDY0NDkgMDAwMDAgbiAKMDAwMDAwNjczNiAwMDAwMCBuIAowMDAwMDA2ODg4IDAwMDAwIG4gCjAwMDAwMDcxMDggMDAwMDAgbiAKMDAwMDAwNzMzMCAwMDAwMCBuIAowMDAwMDA3NDUxIDAwMDAwIG4gCjAwMDAwMDc4NTYgMDAwMDAgbiAKMDAwMDAwNzk5NiAwMDAwMCBuIAowMDAwMDA4MDg1IDAwMDAwIG4gCjAwMDAwMDgyODkgMDAwMDAgbiAKMDAwMDAwODcwMCAwMDAwMCBuIAowMDAwMDA5MDIxIDAwMDAwIG4gCjAwMDAwMDkxODAgMDAwMDAgbiAKMDAwMDAwOTM5MSAwMDAwMCBuIAowMDAwMDEyMjMzIDAwMDAwIG4gCnRyYWlsZXIKPDwgL0luZm8gMzggMCBSIC9Sb290IDEgMCBSIC9TaXplIDM5ID4+CnN0YXJ0eHJlZgoxMjM4NwolJUVPRgo=\n",
"image/svg+xml": [
"\r\n",
"\r\n",
"\r\n",
"\r\n"
],
"text/plain": [
"