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:
- Random Search
- Tree of Parzen Estimators (TPE)
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.