Hyperopt by jaberg (original) (raw)

What is Hyperopt?

hyperopt is a Python library for optimizing over awkward search spaces with real-valued, discrete, and conditional dimensions.

define an objective function

def objective(args): case, val = args if case == 'case 1': return val else: return val ** 2

define a search space

from hyperopt import hp space = hp.choice('a', [ ('case 1', 1 + hp.lognormal('c1', 0, 1)), ('case 2', hp.uniform('c2', -10, 10)) ])

minimize the objective over the space

from hyperopt import fmin, tpe best = fmin(objective, space, algo=tpe.suggest, max_evals=100)

print best

-> {'a': 1, 'c2': 0.01420615366247227}

print hyperopt.space_eval(space, best)

-> ('case 2', 0.01420615366247227}

Algorithms

Currently two algorithms are implemented in hyperopt:

Hyperopt has been designed to accommodate Bayesian optimization algorithms based on Gaussian processes and regression trees, but these are not currently implemented.

All algorithms can be run either serially, or in parallel by communicating via MongoDB.

Installation

User installation:

Developer installation:

git clone https://github.com/jaberg/hyperopt.git (cd hyperopt && python setup.py develop) (cd hyperopt && nosetests)

For more information see Installation Notes.

Documentation

Documentation is currently hosted on the wiki, but here are some quick links to the most relevant pages:

Examples

See projects using hyperopt on the wiki.