In [8]:
# Load Biospytial modules and etc.
%matplotlib inline
import sys
sys.path.append('/apps')
import django
django.setup()
import pandas as pd
import matplotlib.pyplot as plt
## Use the ggplot style
plt.style.use('ggplot')
import numpy as np
import GPflow as gp
X = np.linspace(-3,3,20)
Y = np.random.exponential(np.sin(X)**2)
In [9]:
#build the model
k = gp.kernels.Matern32(1,ARD=False) + gp.kernels.Bias(1)
l = gp.likelihoods.Exponential()
m = gp.gpmc.GPMC(X[:,None], Y[:,None], k, l)
In [11]:
m.kern.matern32.lengthscales.prior = gp.priors.Gamma(1., 1.)
m.kern.matern32.variance.prior = gp.priors.Gamma(1.,1.)
m.kern.bias.variance.prior = gp.priors.Gamma(1.,1.)
In [12]:
m.optimize(maxiter=15) # start near MAP
samples = m.sample(500, verbose=True, epsilon=0.12, Lmax=15)
In [13]:
xtest = np.linspace(-4,4,100)[:,None]
f_samples = []
for s in samples:
m.set_state(s)
f_samples.append(m.predict_f_samples(xtest, 5))
f_samples = np.vstack(f_samples)
In [14]:
rate_samples = np.exp(f_samples[:,:,0])
plt.figure(figsize=(12, 6))
line, = plt.plot(xtest, np.mean(rate_samples, 0), lw=2)
plt.fill_between(xtest[:,0], np.percentile(rate_samples, 5, axis=0), np.percentile(rate_samples, 95, axis=0), color=line.get_color(), alpha = 0.2)
plt.plot(X, Y, 'kx', mew=2)
plt.ylim(-0.1, np.max(np.percentile(rate_samples, 95, axis=0)))
Out[14]:
In [22]:
_ = plt.plot(samples)
In [23]:
## Return a pandas dataframe with the kernel samples
kernel_samples = m.kern.get_samples_df(samples)
In [25]:
kernel_samples.head()
Out[25]:
In [26]:
kernel_samples.mean()
Out[26]:
In [28]:
kernel_samples.std()
Out[28]:
In [ ]: