def create_result(Xi, yi, space=None, rng=None, specs=None, models=None, model_mu=None, model_std=None, gurobi_mipgap=None): """ Initialize an `OptimizeResult` object. Parameters ---------- Xi : list of lists, shape (n_iters, n_features) Location of the minimum at every iteration. yi : array-like, shape (n_iters,) Minimum value obtained at every iteration. space : Space instance, optional Search space. rng : RandomState instance, optional State of the random state. specs : dict, optional Call specifications. models : list, optional List of fit surrogate models. Returns ------- res : `OptimizeResult`, scipy object OptimizeResult instance with the required information. """ res = OptimizeResult() yi = np.asarray(yi) if np.ndim(yi) == 2: res.log_time = np.ravel(yi[:, 1]) yi = np.ravel(yi[:, 0]) best = np.argmin(yi) res.x = Xi[best] res.fun = yi[best] res.func_vals = yi res.x_iters = Xi res.models = models res.model_mu = model_mu res.model_std = model_std res.gurobi_mipgap = gurobi_mipgap res.space = space res.random_state = rng res.specs = specs return res
def create_result(Xi, yi, space=None, rng=None, specs=None, models=None): """ Initialize an `OptimizeResult` object. Parameters ---------- * `Xi` [list of lists, shape=(n_iters, n_features)]: Location of the minimum at every iteration. * `yi` [array-like, shape=(n_iters,)]: Minimum value obtained at every iteration. * `space` [Space instance, optional]: Search space. * `rng` [RandomState instance, optional]: State of the random state. * `specs` [dict, optional]: Call specifications. * `models` [list, optional]: List of fit surrogate models. Returns ------- * `res` [`OptimizeResult`, scipy object]: OptimizeResult instance with the required information. """ res = OptimizeResult() yi = np.asarray(yi) if np.ndim(yi) == 2: res.log_time = np.ravel(yi[:, 1]) yi = np.ravel(yi[:, 0]) best = np.argmin(yi) res.x = Xi[best] res.fun = yi[best] res.func_vals = yi res.x_iters = Xi res.models = models res.space = space res.random_state = rng res.specs = specs return res
def create_result(xi, yi, space=None, rs=None, specs=None, models=None): res = OptimizeResult() yi = np.asarray(yi) if np.ndim(yi) == 2: res.log_time = np.ravel(yi[:, 1]) yi = np.ravel(yi[:, 0]) best = np.argmin(yi) res.x = xi[best] res.fun = yi[best] res.func_vals = yi res.x_iters = xi res.models = models res.space = space res.random_state = rs res.specs = specs return res
def create_result(Xi, yi, n_evaluations=None, space=None, rng=None, specs=None, models=None, maximize=False): """ Initialize an `OptimizeResult` object. Parameters ---------- * `Xi` [list of lists, shape=(n_iters, n_features)]: Location of the minimum at every iteration. * `yi` [array-like, shape=(n_iters,)]: Minimum value obtained at every iteration. * `space` [Space instance, optional]: Search space. * `rng` [RandomState instance, optional]: State of the random state. * `specs` [dict, optional]: Call specifications. * `models` [list, optional]: List of fit surrogate models. Returns ------- * `res` [`OptimizeResult`, scipy object]: OptimizeResult instance with the required information. """ res = OptimizeResult() try: # Hyperband returns evaluations as lists of lists. # We want to store the results as a single array. yi = list(itertools.chain.from_iterable(yi)) Xi = list(itertools.chain.from_iterable(Xi)) except TypeError: # All algorithms other than Hyperband already return a single list. pass yi = np.asarray(yi) if np.ndim(yi) == 2: res.log_time = np.ravel(yi[:, 1]) yi = np.ravel(yi[:, 0]) if maximize: best = np.argmax(yi) else: best = np.argmin(yi) res.x = Xi[best] res.fun = yi[best] if n_evaluations: unique, sort_indices = np.unique(yi, return_index=True) if len(unique) < n_evaluations: func_sort_idx = np.argsort(yi) func_vals = sorted(yi) res.func_vals = np.asarray(func_vals[:n_evaluations]) x_iter_sort = [] for idx in func_sort_idx: x_iter_sort.append(Xi[idx]) res.x_iters = np.asarray(x_iter_sort[:n_evaluations]) res.all_func_vals = np.asarray(yi) res.all_x_iters = np.asarray(Xi) else: func_vals = sorted(unique) res.func_vals = np.asarray(func_vals[:n_evaluations]) x_iter_sort = [] for idx in sort_indices: x_iter_sort.append(Xi[idx]) res.x_iters = np.asarray(x_iter_sort[:n_evaluations]) res.all_func_vals = np.asarray(yi) res.all_x_iters = np.asarray(Xi) else: res.func_vals = np.asarray(yi) res.x_iters = np.asarray(Xi) res.models = models res.space = space res.random_state = rng res.specs = specs return res