# Kernel-DemoΒΆ

This is an example demonstrating various kernel implementation in PyMVPA.

```import numpy as np
from mvpa2.support.pylab import pl

#from mvpa2.suite import *
from mvpa2.base import cfg
from mvpa2.kernels.np import *

# np.random.seed(1)
data = np.random.rand(4, 2)

for kernel_class, kernel_args in (
(ConstantKernel, {'sigma_0':1.0}),
(ConstantKernel, {'sigma_0':1.0}),
(GeneralizedLinearKernel, {'Sigma_p':np.eye(data.shape[1])}),
(GeneralizedLinearKernel, {'Sigma_p':np.ones(data.shape[1])}),
(GeneralizedLinearKernel, {'Sigma_p':2.0}),
(GeneralizedLinearKernel, {}),
(ExponentialKernel, {}),
(SquaredExponentialKernel, {}),
(Matern_3_2Kernel, {}),
(Matern_5_2Kernel, {}),
):
kernel = kernel_class(**kernel_args)
print kernel
result = kernel.compute(data)

# In the following we draw some 2D functions at random from the
# distribution N(O,kernel) defined by each available kernel and
# plot them. These plots shows the flexibility of a given kernel
# (with default parameters) when doing interpolation. The choice
# of a kernel defines a prior probability over the function space
# used for regression/classfication with GPR/GPC.
count = 1
for k in kernel_dictionary.keys():
pl.subplot(3, 4, count)
# X = np.random.rand(size)*12.0-6.0
# X.sort()
X = np.arange(-1, 1, .02)
X = X[:, np.newaxis]
ker = kernel_dictionary[k]()
ker.compute(X, X)
print k
K = np.asarray(ker)
for i in range(10):
f = np.random.multivariate_normal(np.zeros(X.shape[0]), K)
pl.plot(X[:, 0], f, "b-")

pl.title(k)
pl.axis('tight')
count += 1
```

The full source code of this example is included in the PyMVPA source distribution (`doc/examples/kerneldemo.py`).