Created
April 14, 2018 00:39
-
-
Save sadatnfs/11f5d8f63ddbabbf41afaff7d1fb39c6 to your computer and use it in GitHub Desktop.
Fit a Multiclass Gaussian Process Regression with a coregionalization kernel
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Multiclass Gaussian Process Regression with a coregionalization kernel \n", | |
"\n", | |
"### Author: Nafis Sadat\n", | |
"### Updated: April 13, 2018\n", | |
"\n", | |
"#### Purpose: Simulate correlated data and try to fit on testing data on a coregion" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 99, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"## Bring in packages\n", | |
"\n", | |
"import gpflow as gpflow\n", | |
"import pandas as pd\n", | |
"import numpy as np\n", | |
"import xarray as xr\n", | |
"import matplotlib.pyplot as plt\n", | |
"plt.style.use('ggplot')\n", | |
"%matplotlib inline\n", | |
"import seaborn as sns\n", | |
"np.random.seed(1)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 102, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"## A simple function to plot the mean and 95% CIs out of a GPR fit\n", | |
"\n", | |
"def plot_gp(x, mu, var, color='k'):\n", | |
" plt.plot(x, mu, color=color, lw=2)\n", | |
" plt.plot(x, mu + 2*np.sqrt(var), '--', color=color)\n", | |
" plt.plot(x, mu - 2*np.sqrt(var), '--', color=color)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Making our dataset:\n", | |
"\n", | |
"We will simulate our X-axis on a 0-1 scale, but only have a complete series for a single variable, and use that to model the partially completed series" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 73, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"## Create Xs\n", | |
"X1 = np.random.rand(100, 1)\n", | |
"X2 = np.random.rand(100, 1)*.40\n", | |
"X3 = np.random.rand(100, 1)*.65 \n", | |
"\n", | |
"## Create Ys\n", | |
"Y1 = np.sin(5*X1) + np.random.standard_t(3, X1.shape)*0.03\n", | |
"Y2 = np.sin(6*X2+ 0.7) + np.random.standard_t(3, X2.shape)*0.1\n", | |
"Y3 = np.cos(5*X3- 0.3) + np.random.standard_t(3, X3.shape)*0.2\n", | |
"\n", | |
"## Plot\n", | |
"plt.plot(X1, Y1, 'x', mew=2)\n", | |
"plt.plot(X2, Y2, 'x', mew=2)\n", | |
"plt.plot(X3, Y3, 'x', mew=2)\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 74, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# a Coregionalization kernel. The base kernel is Matern, and acts on the first ([0]) data dimension.\n", | |
"# the 'Coregion' kernel indexes the outputs, and actos on the second ([1]) data dimension\n", | |
"k1 = gpflow.kernels.Matern32(1, active_dims=[0])\n", | |
"coreg = gpflow.kernels.Coregion(1, output_dim=3, rank=3, active_dims=[1])\n", | |
"kern = k1 * coreg" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 75, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# Augment the time data with 0/1/2s to indicate the required output dimensions\n", | |
"X_augmented = np.vstack((np.hstack((X1, np.zeros_like(X1))), np.hstack((X2, np.ones_like(X2))) , np.hstack((X3, np.ones_like(X3)*2))) )\n", | |
"\n", | |
"# Augment the Y data to indicate which likelihood we should use\n", | |
"Y_augmented = np.vstack((np.hstack((Y1, np.zeros_like(X1))), np.hstack((Y2, np.ones_like(X2))) , np.hstack((Y3, np.ones_like(X3)*2)) ))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 76, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# Build a variational model using either a Student-T (for heavy tailed noises) or a simple Gaussian likelihood \n", | |
"# lik = gpflow.likelihoods.SwitchedLikelihood([\n", | |
"# gpflow.likelihoods.StudentT(), gpflow.likelihoods.StudentT(), gpflow.likelihoods.StudentT()\n", | |
"# ])\n", | |
"\n", | |
"lik = gpflow.likelihoods.SwitchedLikelihood([\n", | |
" gpflow.likelihoods.Gaussian(), gpflow.likelihoods.Gaussian(), gpflow.likelihoods.Gaussian()\n", | |
"])\n", | |
"\n", | |
"# Biuld the GP model\n", | |
"m = gpflow.models.VGP(X_augmented, Y_augmented, kern=kern, likelihood=lik, num_latent=1)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 78, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/opt/conda/lib/python3.6/site-packages/tensorflow/python/ops/gradients_impl.py:100: UserWarning: Converting sparse IndexedSlices to a dense Tensor of unknown shape. This may consume a large amount of memory.\n", | |
" \"Converting sparse IndexedSlices to a dense Tensor of unknown shape. \"\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"INFO:tensorflow:Optimization terminated with:\n", | |
" Message: b'CONVERGENCE: REL_REDUCTION_OF_F_<=_FACTR*EPSMCH'\n", | |
" Objective function value: -171.027553\n", | |
" Number of iterations: 726\n", | |
" Number of functions evaluations: 783\n" | |
] | |
} | |
], | |
"source": [ | |
"# Fit the covariance function parameters\n", | |
"gpflow.train.ScipyOptimizer().minimize(m)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 79, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style scoped>\n", | |
" .dataframe tbody tr th:only-of-type {\n", | |
" vertical-align: middle;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>class</th>\n", | |
" <th>prior</th>\n", | |
" <th>transform</th>\n", | |
" <th>trainable</th>\n", | |
" <th>shape</th>\n", | |
" <th>fixed_shape</th>\n", | |
" <th>value</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>VGP/kern/matern32/variance</th>\n", | |
" <td>Parameter</td>\n", | |
" <td>None</td>\n", | |
" <td>+ve</td>\n", | |
" <td>True</td>\n", | |
" <td>()</td>\n", | |
" <td>True</td>\n", | |
" <td>1.0151562158765153</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>VGP/kern/matern32/lengthscales</th>\n", | |
" <td>Parameter</td>\n", | |
" <td>None</td>\n", | |
" <td>+ve</td>\n", | |
" <td>True</td>\n", | |
" <td>()</td>\n", | |
" <td>True</td>\n", | |
" <td>0.6359447652190311</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>VGP/kern/coregion/W</th>\n", | |
" <td>Parameter</td>\n", | |
" <td>None</td>\n", | |
" <td>(none)</td>\n", | |
" <td>True</td>\n", | |
" <td>(3, 3)</td>\n", | |
" <td>True</td>\n", | |
" <td>[[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, ...</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>VGP/kern/coregion/kappa</th>\n", | |
" <td>Parameter</td>\n", | |
" <td>None</td>\n", | |
" <td>+ve</td>\n", | |
" <td>True</td>\n", | |
" <td>(3,)</td>\n", | |
" <td>True</td>\n", | |
" <td>[0.6637290565759171, 0.9459817096183656, 1.479...</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>VGP/likelihood/likelihood_list/0/variance</th>\n", | |
" <td>Parameter</td>\n", | |
" <td>None</td>\n", | |
" <td>+ve</td>\n", | |
" <td>True</td>\n", | |
" <td>()</td>\n", | |
" <td>True</td>\n", | |
" <td>0.0020894776323322315</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>VGP/likelihood/likelihood_list/1/variance</th>\n", | |
" <td>Parameter</td>\n", | |
" <td>None</td>\n", | |
" <td>+ve</td>\n", | |
" <td>True</td>\n", | |
" <td>()</td>\n", | |
" <td>True</td>\n", | |
" <td>0.018949884240303434</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>VGP/likelihood/likelihood_list/2/variance</th>\n", | |
" <td>Parameter</td>\n", | |
" <td>None</td>\n", | |
" <td>+ve</td>\n", | |
" <td>True</td>\n", | |
" <td>()</td>\n", | |
" <td>True</td>\n", | |
" <td>0.06031213649381869</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>VGP/q_mu</th>\n", | |
" <td>Parameter</td>\n", | |
" <td>None</td>\n", | |
" <td>(none)</td>\n", | |
" <td>True</td>\n", | |
" <td>(300, 1)</td>\n", | |
" <td>True</td>\n", | |
" <td>[[1.095561708152853], [-1.535152371631651], [-...</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>VGP/q_sqrt</th>\n", | |
" <td>Parameter</td>\n", | |
" <td>None</td>\n", | |
" <td>LoTri->vec</td>\n", | |
" <td>True</td>\n", | |
" <td>(1, 300, 300)</td>\n", | |
" <td>True</td>\n", | |
" <td>[[[0.019321339978307588, 0.0, 0.0, 0.0, 0.0, 0...</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" class prior transform \\\n", | |
"VGP/kern/matern32/variance Parameter None +ve \n", | |
"VGP/kern/matern32/lengthscales Parameter None +ve \n", | |
"VGP/kern/coregion/W Parameter None (none) \n", | |
"VGP/kern/coregion/kappa Parameter None +ve \n", | |
"VGP/likelihood/likelihood_list/0/variance Parameter None +ve \n", | |
"VGP/likelihood/likelihood_list/1/variance Parameter None +ve \n", | |
"VGP/likelihood/likelihood_list/2/variance Parameter None +ve \n", | |
"VGP/q_mu Parameter None (none) \n", | |
"VGP/q_sqrt Parameter None LoTri->vec \n", | |
"\n", | |
" trainable shape \\\n", | |
"VGP/kern/matern32/variance True () \n", | |
"VGP/kern/matern32/lengthscales True () \n", | |
"VGP/kern/coregion/W True (3, 3) \n", | |
"VGP/kern/coregion/kappa True (3,) \n", | |
"VGP/likelihood/likelihood_list/0/variance True () \n", | |
"VGP/likelihood/likelihood_list/1/variance True () \n", | |
"VGP/likelihood/likelihood_list/2/variance True () \n", | |
"VGP/q_mu True (300, 1) \n", | |
"VGP/q_sqrt True (1, 300, 300) \n", | |
"\n", | |
" fixed_shape \\\n", | |
"VGP/kern/matern32/variance True \n", | |
"VGP/kern/matern32/lengthscales True \n", | |
"VGP/kern/coregion/W True \n", | |
"VGP/kern/coregion/kappa True \n", | |
"VGP/likelihood/likelihood_list/0/variance True \n", | |
"VGP/likelihood/likelihood_list/1/variance True \n", | |
"VGP/likelihood/likelihood_list/2/variance True \n", | |
"VGP/q_mu True \n", | |
"VGP/q_sqrt True \n", | |
"\n", | |
" value \n", | |
"VGP/kern/matern32/variance 1.0151562158765153 \n", | |
"VGP/kern/matern32/lengthscales 0.6359447652190311 \n", | |
"VGP/kern/coregion/W [[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, ... \n", | |
"VGP/kern/coregion/kappa [0.6637290565759171, 0.9459817096183656, 1.479... \n", | |
"VGP/likelihood/likelihood_list/0/variance 0.0020894776323322315 \n", | |
"VGP/likelihood/likelihood_list/1/variance 0.018949884240303434 \n", | |
"VGP/likelihood/likelihood_list/2/variance 0.06031213649381869 \n", | |
"VGP/q_mu [[1.095561708152853], [-1.535152371631651], [-... \n", | |
"VGP/q_sqrt [[[0.019321339978307588, 0.0, 0.0, 0.0, 0.0, 0... " | |
] | |
}, | |
"execution_count": 79, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"## Check out the fits\n", | |
"m.as_pandas_table()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 80, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"## Simulate Testing data\n", | |
"xtest = np.hstack([np.linspace(0, 1, 100)])[:,None]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 81, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"## Fit on xtest\n", | |
"mu1, var1 = m.predict_f(np.hstack((xtest, np.zeros_like(xtest))))\n", | |
"mu2, var2 = m.predict_f(np.hstack((xtest, np.ones_like(xtest))))\n", | |
"mu3, var3 = m.predict_f(np.hstack((xtest, 2*np.ones_like(xtest))))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 82, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"## Plot \n", | |
"line, = plt.plot(X1, Y1, 'x', mew=2)\n", | |
"plot_gp(xtest, mu1, var1, line.get_color())\n", | |
"\n", | |
"line, = plt.plot(X2, Y2, 'x', mew=2)\n", | |
"plot_gp(xtest, mu2, var2, line.get_color())\n", | |
"\n", | |
"line, = plt.plot(X3, Y3, 'x', mew=2)\n", | |
"plot_gp(xtest, mu3, var3, line.get_color())" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### The model does a poor job of estimating the correlation between the 3 Ys for x>0.5. This is caused by a saddle-point in the coregion matrix in the objective function. " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 93, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/opt/conda/lib/python3.6/site-packages/tensorflow/python/ops/gradients_impl.py:100: UserWarning: Converting sparse IndexedSlices to a dense Tensor of unknown shape. This may consume a large amount of memory.\n", | |
" \"Converting sparse IndexedSlices to a dense Tensor of unknown shape. \"\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"INFO:tensorflow:Optimization terminated with:\n", | |
" Message: b'STOP: TOTAL NO. of ITERATIONS EXCEEDS LIMIT'\n", | |
" Objective function value: -180.778847\n", | |
" Number of iterations: 1001\n", | |
" Number of functions evaluations: 1089\n" | |
] | |
} | |
], | |
"source": [ | |
"## Re-initialize kernel matrix with random entries to avoid saddle-point and re-optimize\n", | |
"rand_mat = np.random.randn(3, 3)\n", | |
"np.fill_diagonal(rand_mat, 1.0)\n", | |
"\n", | |
"m.kern.coregion.W = rand_mat\n", | |
"gpflow.train.ScipyOptimizer().minimize(m)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 96, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style scoped>\n", | |
" .dataframe tbody tr th:only-of-type {\n", | |
" vertical-align: middle;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>class</th>\n", | |
" <th>prior</th>\n", | |
" <th>transform</th>\n", | |
" <th>trainable</th>\n", | |
" <th>shape</th>\n", | |
" <th>fixed_shape</th>\n", | |
" <th>value</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>VGP/kern/matern32/variance</th>\n", | |
" <td>Parameter</td>\n", | |
" <td>None</td>\n", | |
" <td>+ve</td>\n", | |
" <td>True</td>\n", | |
" <td>()</td>\n", | |
" <td>True</td>\n", | |
" <td>0.027341925687519704</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>VGP/kern/matern32/lengthscales</th>\n", | |
" <td>Parameter</td>\n", | |
" <td>None</td>\n", | |
" <td>+ve</td>\n", | |
" <td>True</td>\n", | |
" <td>()</td>\n", | |
" <td>True</td>\n", | |
" <td>0.734572182397693</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>VGP/kern/coregion/W</th>\n", | |
" <td>Parameter</td>\n", | |
" <td>None</td>\n", | |
" <td>(none)</td>\n", | |
" <td>True</td>\n", | |
" <td>(3, 3)</td>\n", | |
" <td>True</td>\n", | |
" <td>[[5.33029410916914, 1.3136740802790725, -1.569...</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>VGP/kern/coregion/kappa</th>\n", | |
" <td>Parameter</td>\n", | |
" <td>None</td>\n", | |
" <td>+ve</td>\n", | |
" <td>True</td>\n", | |
" <td>(3,)</td>\n", | |
" <td>True</td>\n", | |
" <td>[0.0709326447046722, 0.0036430587971050567, 0....</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>VGP/likelihood/likelihood_list/0/variance</th>\n", | |
" <td>Parameter</td>\n", | |
" <td>None</td>\n", | |
" <td>+ve</td>\n", | |
" <td>True</td>\n", | |
" <td>()</td>\n", | |
" <td>True</td>\n", | |
" <td>0.002096954340679575</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>VGP/likelihood/likelihood_list/1/variance</th>\n", | |
" <td>Parameter</td>\n", | |
" <td>None</td>\n", | |
" <td>+ve</td>\n", | |
" <td>True</td>\n", | |
" <td>()</td>\n", | |
" <td>True</td>\n", | |
" <td>0.018810843757694297</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>VGP/likelihood/likelihood_list/2/variance</th>\n", | |
" <td>Parameter</td>\n", | |
" <td>None</td>\n", | |
" <td>+ve</td>\n", | |
" <td>True</td>\n", | |
" <td>()</td>\n", | |
" <td>True</td>\n", | |
" <td>0.05996604408304894</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>VGP/q_mu</th>\n", | |
" <td>Parameter</td>\n", | |
" <td>None</td>\n", | |
" <td>(none)</td>\n", | |
" <td>True</td>\n", | |
" <td>(300, 1)</td>\n", | |
" <td>True</td>\n", | |
" <td>[[0.953441843214516], [-1.560486883391416], [-...</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>VGP/q_sqrt</th>\n", | |
" <td>Parameter</td>\n", | |
" <td>None</td>\n", | |
" <td>LoTri->vec</td>\n", | |
" <td>True</td>\n", | |
" <td>(1, 300, 300)</td>\n", | |
" <td>True</td>\n", | |
" <td>[[[0.0162377753439612, 0.0, 0.0, 0.0, 0.0, 0.0...</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" class prior transform \\\n", | |
"VGP/kern/matern32/variance Parameter None +ve \n", | |
"VGP/kern/matern32/lengthscales Parameter None +ve \n", | |
"VGP/kern/coregion/W Parameter None (none) \n", | |
"VGP/kern/coregion/kappa Parameter None +ve \n", | |
"VGP/likelihood/likelihood_list/0/variance Parameter None +ve \n", | |
"VGP/likelihood/likelihood_list/1/variance Parameter None +ve \n", | |
"VGP/likelihood/likelihood_list/2/variance Parameter None +ve \n", | |
"VGP/q_mu Parameter None (none) \n", | |
"VGP/q_sqrt Parameter None LoTri->vec \n", | |
"\n", | |
" trainable shape \\\n", | |
"VGP/kern/matern32/variance True () \n", | |
"VGP/kern/matern32/lengthscales True () \n", | |
"VGP/kern/coregion/W True (3, 3) \n", | |
"VGP/kern/coregion/kappa True (3,) \n", | |
"VGP/likelihood/likelihood_list/0/variance True () \n", | |
"VGP/likelihood/likelihood_list/1/variance True () \n", | |
"VGP/likelihood/likelihood_list/2/variance True () \n", | |
"VGP/q_mu True (300, 1) \n", | |
"VGP/q_sqrt True (1, 300, 300) \n", | |
"\n", | |
" fixed_shape \\\n", | |
"VGP/kern/matern32/variance True \n", | |
"VGP/kern/matern32/lengthscales True \n", | |
"VGP/kern/coregion/W True \n", | |
"VGP/kern/coregion/kappa True \n", | |
"VGP/likelihood/likelihood_list/0/variance True \n", | |
"VGP/likelihood/likelihood_list/1/variance True \n", | |
"VGP/likelihood/likelihood_list/2/variance True \n", | |
"VGP/q_mu True \n", | |
"VGP/q_sqrt True \n", | |
"\n", | |
" value \n", | |
"VGP/kern/matern32/variance 0.027341925687519704 \n", | |
"VGP/kern/matern32/lengthscales 0.734572182397693 \n", | |
"VGP/kern/coregion/W [[5.33029410916914, 1.3136740802790725, -1.569... \n", | |
"VGP/kern/coregion/kappa [0.0709326447046722, 0.0036430587971050567, 0.... \n", | |
"VGP/likelihood/likelihood_list/0/variance 0.002096954340679575 \n", | |
"VGP/likelihood/likelihood_list/1/variance 0.018810843757694297 \n", | |
"VGP/likelihood/likelihood_list/2/variance 0.05996604408304894 \n", | |
"VGP/q_mu [[0.953441843214516], [-1.560486883391416], [-... \n", | |
"VGP/q_sqrt [[[0.0162377753439612, 0.0, 0.0, 0.0, 0.0, 0.0... " | |
] | |
}, | |
"execution_count": 96, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"## Check our posteriors again\n", | |
"m.as_pandas_table()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 97, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"## Refit on test data, with the new optimized parameters\n", | |
"\n", | |
"mu1, var1 = m.predict_f(np.hstack((xtest, np.zeros_like(xtest))))\n", | |
"mu2, var2 = m.predict_f(np.hstack((xtest, np.ones_like(xtest))))\n", | |
"mu3, var3 = m.predict_f(np.hstack((xtest, 2*np.ones_like(xtest))))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 101, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"line, = plt.plot(X1, Y1, 'x', mew=2)\n", | |
"plot_gp(xtest, mu1, var1, line.get_color())\n", | |
"\n", | |
"line, = plt.plot(X2, Y2, 'x', mew=2)\n", | |
"plot_gp(xtest, mu2, var2, line.get_color())\n", | |
"\n", | |
"line, = plt.plot(X3, Y3, 'x', mew=2)\n", | |
"plot_gp(xtest, mu3, var3, line.get_color())" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.6.4" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment