[docs]@defineclassMeanPredictionSurrogate(Surrogate):"""A trivial surrogate model. It provides the average value of the training targets as posterior mean and a (data-independent) constant posterior variance. """# Class variablesjoint_posterior:ClassVar[bool]=False# See base class.supports_transfer_learning:ClassVar[bool]=False# See base class.# Object variables_model:float|None=field(init=False,default=None,eq=False)"""The estimated posterior mean value of the training targets."""@batchifydef_posterior(self,candidates:Tensor)->tuple[Tensor,Tensor]:# See base class.importtorch# TODO: use target value bounds for covariance scaling when explicitly providedmean=self._model*torch.ones([len(candidates)])var=torch.ones(len(candidates))returnmean,vardef_fit(self,searchspace:SearchSpace,train_x:Tensor,train_y:Tensor)->None:# See base class.self._model=train_y.mean().item()