def optimizer_UCB(optimizer: BaseLearner, X: modALinput, beta: float = 1) -> np.ndarray: """ Upper confidence bound acquisition function for Bayesian optimization. Args: optimizer: The :class:`~modAL.models.BayesianOptimizer` object for which the utility is to be calculated. X: The samples for which the upper confidence bound is to be calculated. beta: Value controlling the beta parameter. Returns: Upper confidence bound utility score. """ try: mean, std = optimizer.predict(X, return_std=True) std = std.reshape(-1, 1) except NotFittedError: mean, std = np.zeros(shape=(X.shape[0], 1)), np.ones(shape=(X.shape[0], 1)) return UCB(mean, std, beta)
def optimizer_EI(optimizer: BaseLearner, X: modALinput, tradeoff: float = 0) -> np.ndarray: """ Expected improvement acquisition function for Bayesian optimization. Args: optimizer: The :class:`~modAL.models.BayesianOptimizer` object for which the utility is to be calculated. X: The samples for which the expected improvement is to be calculated. tradeoff: Value controlling the tradeoff parameter. Returns: Expected improvement utility score. """ try: mean, std = optimizer.predict(X, return_std=True) std = std.reshape(-1, 1) except NotFittedError: mean, std = np.zeros(shape=(X.shape[0], 1)), np.ones(shape=(X.shape[0], 1)) return EI(mean, std, optimizer.y_max, tradeoff)