Source code for baybe.recommenders.pure.nonpredictive.base
"""Base class for all nonpredictive recommenders."""importwarningsfromabcimportABCimportpandasaspdfromattrsimportdefinefrombaybe.exceptionsimportUnusedObjectWarningfrombaybe.objectives.baseimportObjectivefrombaybe.recommenders.pure.baseimportPureRecommenderfrombaybe.searchspace.coreimportSearchSpace
[docs]@defineclassNonPredictiveRecommender(PureRecommender,ABC):"""Abstract base class for all nonpredictive recommenders."""
[docs]defrecommend(# noqa: D102self,batch_size:int,searchspace:SearchSpace,objective:Objective|None=None,measurements:pd.DataFrame|None=None,)->pd.DataFrame:# See base class.if(measurementsisnotNone)and(len(measurements)!=0):warnings.warn(f"'{self.recommend.__name__}' was called with a non-empty "f"set of measurements but '{self.__class__.__name__}' does not "f"utilize any training data, meaning that the argument is ignored.",UnusedObjectWarning,)ifobjectiveisnotNone:warnings.warn(f"'{self.recommend.__name__}' was called with a an explicit objective "f"but '{self.__class__.__name__}' does not "f"consider any objectives, meaning that the argument is ignored.",UnusedObjectWarning,)returnsuper().recommend(batch_size=batch_size,searchspace=searchspace,objective=objective,measurements=measurements,)