diff --git a/autotm/algorithms_for_tuning/genetic_algorithm/ga.py b/autotm/algorithms_for_tuning/genetic_algorithm/ga.py index 729e521..7c1b43a 100644 --- a/autotm/algorithms_for_tuning/genetic_algorithm/ga.py +++ b/autotm/algorithms_for_tuning/genetic_algorithm/ga.py @@ -195,6 +195,8 @@ def _sort_population(population): population.sort(key=operator.attrgetter("fitness_value"), reverse=True) def _calculate_uncertain_res(self, generation, iteration_num: int, proc=0.3): + if len(generation) == 0: + return [] X = np.array([individ.dto.params.to_vector() for individ in generation]) certanty = get_prediction_uncertanty( self.surrogate.surrogate, X, self.surrogate.name diff --git a/autotm/algorithms_for_tuning/genetic_algorithm/surrogate.py b/autotm/algorithms_for_tuning/genetic_algorithm/surrogate.py index 7154d27..b8dd683 100644 --- a/autotm/algorithms_for_tuning/genetic_algorithm/surrogate.py +++ b/autotm/algorithms_for_tuning/genetic_algorithm/surrogate.py @@ -53,6 +53,13 @@ def __init__(self, surrogate_name, **kwargs): self.gpr_kernel = None def create(self): + kernel = self.kwargs["gpr_kernel"] + del self.kwargs["gpr_kernel"] + gpr_alpha = self.kwargs["gpr_alpha"] + del self.kwargs["gpr_alpha"] + normalize_y = self.kwargs["normalize_y"] + del self.kwargs["normalize_y"] + if self.name == "random-forest-regressor": self.surrogate = RandomForestRegressor(**self.kwargs) elif self.name == "mlp-regressor": @@ -70,8 +77,6 @@ def create(self): ) elif self.name == "GPR": # tune ?? if not self.gpr_kernel: - kernel = self.kwargs["gpr_kernel"] - del self.kwargs["gpr_kernel"] if kernel == "RBF": self.gpr_kernel = 1.0 * RBF(1.0) elif kernel == "RBFwithConstant": @@ -85,8 +90,8 @@ def create(self): elif kernel == "RationalQuadratic": self.gpr_kernel = RationalQuadratic(1.0) self.kwargs["kernel"] = self.gpr_kernel - self.kwargs["alpha"] = self.kwargs["gpr_alpha"] - del self.kwargs["gpr_alpha"] + self.kwargs["alpha"] = gpr_alpha + self.kwargs["normalize_y"] = normalize_y self.surrogate = GaussianProcessRegressor(**self.kwargs) elif self.name == "decision-tree-regressor": try: diff --git a/autotm/visualization/dynamic_tracker.py b/autotm/visualization/dynamic_tracker.py index ceb9dd1..28cf92e 100644 --- a/autotm/visualization/dynamic_tracker.py +++ b/autotm/visualization/dynamic_tracker.py @@ -212,7 +212,11 @@ def get_metric_df(self): cur_df = pd.DataFrame(cur_df_dict) cur_df[GENERATION_COL] = gen dfs.append(cur_df) - self.crossover_df = pd.concat(dfs) + if len(dfs) > 0: + self.crossover_df = pd.concat(dfs) + else: + warnings.warn("No crossover changes have been found to save", RuntimeWarning) + self.crossover_df = pd.DataFrame([]) def write_metrics_to_file(self): os.makedirs(self.save_path, exist_ok=True)