More than an eBook, because each chapter is actually an IPython notebook, which means you can view the chapters in your browser plus edit and run the code provided (and try some practice questions). Learn more about Bayesian inference, MCMC (Markov Chain Monte Carlo), and probabilistic programming -- by interactive coding.
Hyperopt is a Python library which is essentially a randomized algorithm to optimize the parameters of another algorithm to fit data. To generalize, one can randomly select from a set of different machine learning algorithms. The speaker at the June 2013 SciPy conference, James Bergstra, claims that Hyperopt has been undefeated against domain experts in his field.
Currently two algorithms are implemented in hyperopt:
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.