All Projects → josejimenezluna → Pygpgo

josejimenezluna / Pygpgo

Licence: mit
Bayesian optimization for Python

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Pygpgo

Bayesiantracker
Bayesian multi-object tracking
Stars: ✭ 121 (-38.27%)
Mutual labels:  bayesian, optimization
Cornell Moe
A Python library for the state-of-the-art Bayesian optimization algorithms, with the core implemented in C++.
Stars: ✭ 198 (+1.02%)
Mutual labels:  bayesian, optimization
Iminuit
Jupyter-friendly Python interface for C++ MINUIT2
Stars: ✭ 172 (-12.24%)
Mutual labels:  optimization
Flips
Fsharp LInear Programming System
Stars: ✭ 188 (-4.08%)
Mutual labels:  optimization
Quant Notes
Quantitative Interview Preparation Guide, updated version here ==>
Stars: ✭ 180 (-8.16%)
Mutual labels:  optimization
Mlrmbo
Toolbox for Bayesian Optimization and Model-Based Optimization in R
Stars: ✭ 173 (-11.73%)
Mutual labels:  optimization
Optaplanner
AI constraint solver in Java to optimize the vehicle routing problem, employee rostering, task assignment, maintenance scheduling, conference scheduling and other planning problems.
Stars: ✭ 2,454 (+1152.04%)
Mutual labels:  optimization
Squid
Squid – type-safe metaprogramming and compilation framework for Scala
Stars: ✭ 172 (-12.24%)
Mutual labels:  optimization
Aerosandbox
Aircraft design optimization made fast through modern automatic differentiation. Plug-and-play analysis tools for aerodynamics, propulsion, structures, trajectory design, and much, much more.
Stars: ✭ 193 (-1.53%)
Mutual labels:  optimization
Dropcss
An exceptionally fast, thorough and tiny unused-CSS cleaner
Stars: ✭ 2,102 (+972.45%)
Mutual labels:  optimization
Powermodels.jl
A Julia/JuMP Package for Power Network Optimization
Stars: ✭ 187 (-4.59%)
Mutual labels:  optimization
Openwrt Sfe Flowoffload Ath79
Openwrt firmware with SFE and FlowOffload
Stars: ✭ 178 (-9.18%)
Mutual labels:  optimization
Stan
Stan development repository. The master branch contains the current release. The develop branch contains the latest stable development. See the Developer Process Wiki for details.
Stars: ✭ 2,177 (+1010.71%)
Mutual labels:  bayesian
Hyperactive
A hyperparameter optimization and data collection toolbox for convenient and fast prototyping of machine-learning models.
Stars: ✭ 182 (-7.14%)
Mutual labels:  optimization
Dynamichmc.jl
Implementation of robust dynamic Hamiltonian Monte Carlo methods (NUTS) in Julia.
Stars: ✭ 172 (-12.24%)
Mutual labels:  bayesian
Coz
Coz: Causal Profiling
Stars: ✭ 2,719 (+1287.24%)
Mutual labels:  optimization
Shinystan
shinystan R package and ShinyStan GUI
Stars: ✭ 172 (-12.24%)
Mutual labels:  bayesian
Scikit Optimize
Sequential model-based optimization with a `scipy.optimize` interface
Stars: ✭ 2,258 (+1052.04%)
Mutual labels:  optimization
Ml Systems
papers on scalable and efficient machine learning systems
Stars: ✭ 182 (-7.14%)
Mutual labels:  optimization
Peroxide
Rust numeric library with R, MATLAB & Python syntax
Stars: ✭ 191 (-2.55%)
Mutual labels:  optimization

pyGPGO: Bayesian Optimization for Python

Build Status codecov Documentation Status DOI status

sine

pyGPGO is a simple and modular Python (>3.5) package for bayesian optimization.

Bayesian optimization is a framework that can be used in situations where:

  • Your objective function may not have a closed form. (e.g. the result of a simulation)
  • No gradient information is available.
  • Function evaluations may be noisy.
  • Evaluations are expensive (time/cost-wise)

Installation

Retrieve the latest stable release from pyPI:

pip install pyGPGO

Or if you're feeling adventurous, retrieve it from this repo,

pip install git+https://github.com/hawk31/pyGPGO

Check our documentation in http://pygpgo.readthedocs.io/.

Dependencies

  • Typical Python scientific stuff: numpy, scipy.
  • joblib, used for parallel computation
  • scikit-learn, for other surrogates different from Gaussian Processes.
  • pyMC3, for integrated acquisition functions and MCMC inference.
  • theano for GPU processing.

All dependencies are automatically taken care for in the requirements file.

Features

  • Different surrogate models: Gaussian Processes, Student-t Processes, Random Forests, Gradient Boosting Machines.
  • Type II Maximum-Likelihood of covariance function hyperparameters.
  • MCMC sampling for full-Bayesian inference of hyperparameters (via pyMC3).
  • Integrated acquisition functions

A small example!

The user only has to define a function to maximize and a dictionary specifying input space.

import numpy as np
from pyGPGO.covfunc import matern32
from pyGPGO.acquisition import Acquisition
from pyGPGO.surrogates.GaussianProcess import GaussianProcess
from pyGPGO.GPGO import GPGO


def f(x, y):
    # Franke's function (https://www.mathworks.com/help/curvefit/franke.html)
    one = 0.75 * np.exp(-(9 * x - 2) ** 2 / 4 - (9 * y - 2) ** 2 / 4)
    two = 0.75 * np.exp(-(9 * x + 1) ** 2/ 49 - (9 * y + 1) / 10)
    three = 0.5 * np.exp(-(9 * x - 7) ** 2 / 4 - (9 * y -3) ** 2 / 4)
    four = 0.25 * np.exp(-(9 * x - 4) ** 2 - (9 * y - 7) ** 2)
    return one + two + three - four

cov = matern32()
gp = GaussianProcess(cov)
acq = Acquisition(mode='ExpectedImprovement')
param = {'x': ('cont', [0, 1]),
         'y': ('cont', [0, 1])}

np.random.seed(1337)
gpgo = GPGO(gp, acq, f, param)
gpgo.run(max_iter=10)

Check the tutorials and examples folders for more ideas on how to use the software.

Citation

If you use pyGPGO in academic work please cite:

Jiménez, J., & Ginebra, J. (2017). pyGPGO: Bayesian Optimization for Python. The Journal of Open Source Software, 2, 431.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].