It seems that the initialization of GaussianProcess is the issue. Getting rid of the dimension fixed the problem for me.
self.gp = GaussianProcess(theta0=np.random.uniform(0.001, 0.05),
thetaL=1e-5,
thetaU=1e0,
random_start=30)
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-10-bd49ddf8b378> in <module>()
1 bo = BayesianOptimization(search_fun, {'x': (min(x), max(x)), 'y': (min(y), max(y))})
----> 2 bo.maximize(init_points=4, n_iter=40, kappa=2)
3 print(bo.res['all'])
/home/mai/anaconda3/lib/python3.4/site-packages/bayes_opt/bayesian_optimization.py in maximize(self, init_points, n_iter, acq, kappa, **gp_params)
289 ur = unique_rows(self.X)
290 print(self.X[ur], self.Y[ur])
--> 291 self.gp.fit(self.X[ur], self.Y[ur])
292
293 # Finding argmax of the acquisition function.
/home/mai/anaconda3/lib/python3.4/site-packages/sklearn/gaussian_process/gaussian_process.py in fit(self, X, y)
336 "autocorrelation parameters...")
337 self.theta_, self.reduced_likelihood_function_value_, par = \
--> 338 self._arg_max_reduced_likelihood_function()
339 if np.isinf(self.reduced_likelihood_function_value_):
340 raise Exception("Bad parameter region. "
/home/mai/anaconda3/lib/python3.4/site-packages/sklearn/gaussian_process/gaussian_process.py in _arg_max_reduced_likelihood_function(self)
728 optimize.fmin_cobyla(minus_reduced_likelihood_function,
729 np.log10(theta0), constraints,
--> 730 iprint=0)
731 except ValueError as ve:
732 print("Optimization failed. Try increasing the ``nugget``")
/home/mai/anaconda3/lib/python3.4/site-packages/scipy/optimize/cobyla.py in fmin_cobyla(func, x0, cons, args, consargs, rhobeg, rhoend, iprint, maxfun, disp, catol)
170
171 sol = _minimize_cobyla(func, x0, args, constraints=con,
--> 172 **opts)
173 if iprint > 0 and not sol['success']:
174 print("COBYLA failed to find a solution: %s" % (sol.message,))
/home/mai/anaconda3/lib/python3.4/site-packages/scipy/optimize/cobyla.py in _minimize_cobyla(fun, x0, args, constraints, rhobeg, tol, iprint, maxiter, disp, catol, **unknown_options)
237 cons_lengths = []
238 for c in constraints:
--> 239 f = c['fun'](x0, *c['args'])
240 try:
241 cons_length = len(f)
/home/mai/anaconda3/lib/python3.4/site-packages/sklearn/gaussian_process/gaussian_process.py in <lambda>(log10t, i)
705 for i in range(self.theta0.size):
706 constraints.append(lambda log10t, i=i:
--> 707 log10t[i] - np.log10(self.thetaL[0, i]))
708 constraints.append(lambda log10t, i=i:
709 np.log10(self.thetaU[0, i]) - log10t[i])