diff --git a/src/surfaces/test_functions/_base_test_function.py b/src/surfaces/test_functions/_base_test_function.py index 327726b..913a505 100644 --- a/src/surfaces/test_functions/_base_test_function.py +++ b/src/surfaces/test_functions/_base_test_function.py @@ -7,8 +7,6 @@ import numpy as np import pandas as pd -from ..data_collector import SurfacesDataCollector - class BaseTestFunction: explanation = """ """ @@ -20,18 +18,12 @@ class BaseTestFunction: objective_function: callable pure_objective_function: callable - def __init__(self, metric, sleep, evaluate_from_data): + def __init__(self, metric, sleep): self.sleep = sleep self.metric = metric self.create_objective_function() - if evaluate_from_data: - self.sdc = SurfacesDataCollector() - self._objective_function_ = self.objective_function_loaded - else: - self._objective_function_ = self.pure_objective_function - def create_objective_function(self): e_msg = "'create_objective_function'-method is not implemented" raise NotImplementedError(e_msg) @@ -61,30 +53,4 @@ def objective_function(self, *input): """ metric = self.pure_objective_function(*input) - print("\n metric ", metric, "\n") return self.return_metric(metric) - - def objective_function_loaded(self, params): - try: - parameter_d = params.para_dict - except AttributeError: - parameter_d = params - - for para_names, dim_value in parameter_d.items(): - try: - parameter_d[para_names] = dim_value.__name__ - except AttributeError: - pass - - search_data = self.sdc.load(self.__name__) - if search_data is None: - msg = "Search Data is empty" - raise TypeError(msg) - - params_df = pd.DataFrame(parameter_d, index=[0]) - - para_df_row = search_data[ - np.all(search_data[self.para_names].values == params_df.values, axis=1) - ] - score = para_df_row["score"].values[0] - return score diff --git a/src/surfaces/test_functions/machine_learning/base_machine_learning_function.py b/src/surfaces/test_functions/machine_learning/base_machine_learning_function.py index 8532768..2c5201f 100644 --- a/src/surfaces/test_functions/machine_learning/base_machine_learning_function.py +++ b/src/surfaces/test_functions/machine_learning/base_machine_learning_function.py @@ -4,8 +4,40 @@ from .._base_test_function import BaseTestFunction +from ...data_collector import SurfacesDataCollector class MachineLearningFunction(BaseTestFunction): def __init__(self, metric, sleep, evaluate_from_data): - super().__init__(metric, sleep, evaluate_from_data) + super().__init__(metric, sleep) + + if evaluate_from_data: + self.sdc = SurfacesDataCollector() + self._objective_function_ = self.objective_function_loaded + else: + self._objective_function_ = self.pure_objective_function + + def objective_function_loaded(self, params): + try: + parameter_d = params.para_dict + except AttributeError: + parameter_d = params + + for para_names, dim_value in parameter_d.items(): + try: + parameter_d[para_names] = dim_value.__name__ + except AttributeError: + pass + + search_data = self.sdc.load(self.__name__) + if search_data is None: + msg = "Search Data is empty" + raise TypeError(msg) + + params_df = pd.DataFrame(parameter_d, index=[0]) + + para_df_row = search_data[ + np.all(search_data[self.para_names].values == params_df.values, axis=1) + ] + score = para_df_row["score"].values[0] + return score diff --git a/src/surfaces/test_functions/mathematical/_base_mathematical_function.py b/src/surfaces/test_functions/mathematical/_base_mathematical_function.py index d839878..7357dee 100644 --- a/src/surfaces/test_functions/mathematical/_base_mathematical_function.py +++ b/src/surfaces/test_functions/mathematical/_base_mathematical_function.py @@ -19,13 +19,14 @@ def __init__( self, metric="loss", sleep=0, - evaluate_from_data=False, ): - super().__init__(metric, sleep, evaluate_from_data) + super().__init__(metric, sleep) self.metric = metric self.sleep = sleep + self._objective_function_ = self.pure_objective_function + def return_metric(self, loss): if self.metric == "score": return -loss