Metadata-Version: 2.0
Name: gplib
Version: 0.5.2
Summary: Python library for Gaussian Process Regression.
Home-page: https://github.com/ibaidev/gplib
Author: Ibai Roman
Author-email: ibaidev@users.noreply.github.com
License: GPLv3
Description-Content-Type: UNKNOWN
Keywords: Gaussian Process
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Dist: scipy
Requires-Dist: numpy
Requires-Dist: matplotlib

.. image:: https://travis-ci.org/ibaidev/gplib.svg?branch=master
  :target: https://travis-ci.org/ibaidev/gplib
  :alt: Build Status
.. image:: https://readthedocs.org/projects/gplib/badge/?version=latest
  :target: http://gplib.readthedocs.io/?badge=latest
  :alt: Documentation Status

GPlib
=====

A python library for Gaussian Process Regression.

Setup GPlib
-----------

- The following packages must be installed before installing GPlib

.. code-block:: bash

  # for ptyhon3
  apt-get install python3-tk
  # or for python2
  apt-get install python-tk

- Create and activate virtualenv (for python2) or
  venv (for ptyhon3)

.. code-block:: bash

  # for ptyhon3
  python3 -m venv --system-site-packages .env
  # or for python2
  virtualenv --system-site-packages .env

  source .env/bin/activate

- Upgrade pip

.. code-block:: bash

  # for ptyhon3
  python3 -m pip install --upgrade pip
  # or for python2
  python -m pip install --upgrade pip

- Install GPlib package

.. code-block:: bash

  python -m pip install gplib


Use GPlib
----------------------

- Import GPlib to use it in your python script.

.. code-block:: python

  import gplib

- Generate some data and test points.

.. code-block:: python

  import numpy as np
  data = {
    'X': np.arange(3, 8, 1)[:, None],
    'Y': np.random.uniform(0, 2, 5)[:, None]
  }
  plot_points = np.arange(0, 10, 0.01)[:, None]


- Initialize the GP module with the desired modules.

.. code-block:: python

  gp = gplib.GP(
    mean_function=gplib.mea.Constant(data),
    covariance_function=gplib.cov.SquaredExponential(data, is_ard=False),
    likelihood_function=gplib.lik.Gaussian(is_noisy=True),
    inference_method=gplib.inf.ExactGaussian()
  )


- Sample the prior and the posterior GPs.

.. code-block:: python

  prior_samples = gp.sample(plot_points, n_samples=10)
  posterior_gp = gp.get_posterior(data)
  posterior_samples = posterior_gp.sample(plot_points, n_samples=10)


- Finally plot the samples.

.. code-block:: python

  import matplotlib.pyplot as plt

  plt.style.use('ggplot')

  plt.clf()
  plt.plot(
    (plot_points).flatten().tolist(),
    prior_samples, color='#43dce5'
  )
  plt.plot(
    (plot_points).flatten().tolist(),
    posterior_samples, color='#b19df0'
  )
  plt.plot(
    (data['X']).flatten().tolist(),
    (data['Y']).flatten().tolist(), color='#714ce5',
    linestyle='None', marker='o'
  )
  plt.show()

- There are more examples in examples/ directory. Check them out!

Develop GPlib
-------------

-  Download the repository using git

.. code-block:: bash

  git clone https://github.com/ibaidev/gplib.git
  cd gplib
  git config user.email 'MAIL'
  git config user.name 'NAME'
  git config credential.helper 'cache --timeout=300'
  git config push.default simple

-  Update API documentation

.. code-block:: bash

  source ./.env/bin/activate
  pip install Sphinx
  cd docs/
  sphinx-apidoc -f -o ./ ../gplib


