{"id":23667,"library":"emukit","title":"Emukit","description":"A Python toolkit for decision-making under uncertainty, including Bayesian optimization, experimental design, and quadrature. Current version 0.5.1, requires Python >=3.10. Released approximately twice per year since 2018.","status":"active","version":"0.5.1","language":"python","source_language":"en","source_url":"https://github.com/emukit/emukit","tags":["bayesian-optimization","experimental-design","quadrature","emukit","gpy","decision-making","active-learning","uncertainty-quantification"],"install":[{"cmd":"pip install emukit","lang":"bash","label":"Core install"},{"cmd":"pip install emukit[gpy]","lang":"bash","label":"With GPy support"},{"cmd":"pip install emukit[sklearn]","lang":"bash","label":"With sklearn GP"}],"dependencies":[{"reason":"Default Gaussian process backend; pinned to numpy<2.0","package":"GPy","optional":true},{"reason":"Optional GP backend via wrapper","package":"scikit-learn","optional":true},{"reason":"Optional Bayesian neural network backend","package":"bnn","optional":true}],"imports":[{"note":"BayesianOptimizationLoop is in emukit.bayesian_optimization.loops, not the top-level of the module.","wrong":"from emukit.bayesian_optimization import BayesianOptimizationLoop","symbol":"BayesianOptimizationLoop","correct":"from emukit.bayesian_optimization.loops import BayesianOptimizationLoop"},{"note":"LatinDesign is in emukit.experimental_design.model_free.latin_design.","wrong":"from emukit.experimental_design import LatinDesign","symbol":"create_initial_design","correct":"from emukit.experimental_design.model_free.latin_design import LatinDesign"},{"note":"Model wrappers live in emukit.model_wrappers, not emukit.models.","wrong":"from emukit.models import GPyModel","symbol":"GPyModel","correct":"from emukit.model_wrappers import GPyModel"},{"note":"Quadrature kernel/measure classes are in emukit.quadrature.kernels.","wrong":"from emukit.quadrature import QuadratureCaratheodoryMeasure","symbol":"QuadratureCaratheodoryMeasure","correct":"from emukit.quadrature.kernels import QuadratureCaratheodoryMeasure"}],"quickstart":{"code":"import numpy as np\nfrom emukit.core import ContinuousParameter, ParameterSpace\nfrom emukit.model_wrappers import GPyModelWrapper\nfrom emukit.bayesian_optimization.loops import BayesianOptimizationLoop\nfrom emukit.core.acquisition import ExpectedImprovement\n\n# Define a simple objective\ndef objective(x):\n    return x**2\n\n# Parameter space\nspace = ParameterSpace([ContinuousParameter('x', -5, 5)])\n\n# Initial data\nX_init = np.random.uniform(-5, 5, (3, 1))\nY_init = objective(X_init)\n\n# Model\ngpy_model = GPyModelWrapper(X_init, Y_init)\n\n# Acquisition function\nei = ExpectedImprovement()\n\n# Optimization loop\nloop = BayesianOptimizationLoop(space, gpy_model, acquisition=ei)\n\n# Run one iteration\nnew_x = loop.get_next_points([X_init, Y_init])\nprint('Suggested next point:', new_x)","lang":"python","description":"Minimal Bayesian optimization loop using Emukit with a GPy model."},"warnings":[{"fix":"Upgrade to Python >=3.10. For numpy>=2.0, install emukit without gpy extra and use sklearn GP wrapper instead.","message":"Emukit 0.5.0 dropped support for Python <3.10. Also, numpy>=2.0 compatibility now requires using emukit core without GPy (GPy is pinned to numpy<2.0).","severity":"breaking","affected_versions":">=0.5.0"},{"fix":"Use from emukit.model_wrappers import GPyModelWrapper and pass numpy arrays.","message":"The GPy model wrapper in emukit.model_wrappers.GPyModel expects X and Y arrays; do not pass GPy objects directly.","severity":"gotcha","affected_versions":"all"},{"fix":"Pass loop.get_next_points([X, Y]) with X and Y as 2D arrays.","message":"BayesianOptimizationLoop requires the 'get_next_points' method to receive a list of (X, Y) tuples, not just the model.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Use: from emukit.bayesian_optimization.loops import BayesianOptimizationLoop","cause":"Import path is wrong; the correct import is from emukit.bayesian_optimization.loops.","error":"ModuleNotFoundError: No module named 'emukit.bayesian_optimization'"},{"fix":"pip install emukit[gpy] or pip install emukit[sklearn] for sklearn wrapper.","cause":"Misspelled 'emukit' or installed the wrong package; also GPy may be missing.","error":"AttributeError: module 'emukit' has no attribute 'model_wrappers'"},{"fix":"Ensure X.shape[0] == Y.shape[0]; both must be 2D arrays (n_samples, n_dims).","cause":"Passed X and Y arrays with mismatched first dimension.","error":"ValueError: The number of points in X and Y must be the same"},{"fix":"Use: from emukit.model_wrappers import GPyModelWrapper","cause":"Incorrect class name; should be GPyModelWrapper.","error":"ImportError: cannot import name 'GPyModel' from 'emukit.model_wrappers'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}