Skip to content

Commit ab61027

Browse files
authored
Support combined kernels (#597)
1 parent 8688445 commit ab61027

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

bayes_opt/parameter.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,10 @@ def __call__(self, X: Any, Y: Any = None, eval_gradient: bool = False) -> Any:
489489
def __reduce__(self) -> str | tuple[Any, ...]:
490490
return (wrap_kernel, (kernel, transform))
491491

492-
return WrappedKernel(**kernel.get_params())
492+
wrapped_instance = WrappedKernel.__new__(WrappedKernel)
493+
wrapped_instance.__dict__.update(kernel.__dict__)
494+
wrapped_instance._transform = transform
495+
return wrapped_instance
493496

494497

495498
def _copy_signature(source_fct: Callable[..., Any]) -> Callable[[Callable[..., Any]], Callable[..., Any]]:

tests/test_parameter.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,3 +244,17 @@ def test_wrapped_kernel_fit():
244244
gp.fit(space.params, space.target)
245245

246246
assert gp.kernel_.length_scale != 1e5
247+
248+
249+
def test_combined_wrapped_kernel_fit():
250+
pbounds = {"p1": (0, 1), "p2": (1, 10, int)}
251+
space = TargetSpace(None, pbounds)
252+
253+
space.register(space.random_sample(0), 1.0)
254+
space.register(space.random_sample(1), 5.0)
255+
256+
kernel_fct = kernels.Matern(nu=2.5, length_scale=1e5) + kernels.WhiteKernel(noise_level=1.0)
257+
kernel = wrap_kernel(kernel_fct, space.kernel_transform)
258+
gp = GaussianProcessRegressor(kernel=kernel, alpha=1e-6, n_restarts_optimizer=5)
259+
260+
gp.fit(space.params, space.target)

0 commit comments

Comments
 (0)