hyperopt/hyperopt — pull request #166 by jaberg (2013-11-12 16:57:41+00:00)
Title: Cut BanditAlgo (squashed history)

This huge commit changes a number of things:

* Removes Bandit.rng:
Semantically, a Bandit/Domain represents a search space. If the eval_fn
has a stochastic element to it (some test functions do), then that should
be in the eval_fn, not the Bandit. The Bandit.rng attribute was being used
by random search, which forced random search to affect the search space.
@willgroves bug report about inconsistent handling of seeds and random
number generators was the issue that actually kicked off this long-overdue
piece of work.

* Removes BanditAlgo class entirely:
The newer approach of "rand.suggest" and "tpe.suggest" has proven to be
a much cleaner and effective approach, BanditAlgo is just in the way now,
and since the tests were written originally to use BanditAlgo, it
introduced a number of differences between what was tested and how user
code is usually written.

* Removes Experiment class entirely:
The newer approach of using "fmin" has proven to be much cleaner and
clearer than using the older Experiment class. Experiment was never widely
used I think, and hasn't been in the documentation for a year or more.

* Removes the mongo-search CLI:
There used to be a command-line program hyperopt-mongo-search but it has
been gone for a while. I removed the support code for that script from
mongoexp.py, and removed the tests of that support code.

* Saner requirements on dictionaries returned by eval_fn:
Domain.evaluate now requires a status key from all returned dictionaries,
it no longer defaults to 'ok'. The loss is only checked if status ==
'ok'. That's the behaviour that was documented, and it seems more
reasonable then it what it used to be doing.

* Misc more minor improvements:
* Several files are flake8-compliant
* unused imports removed
* better docstrings in a few places
* Domain has moved from fmin to base