From 9acd665a568dd1411638286f59a5b1c8c5349677 Mon Sep 17 00:00:00 2001 From: perib Date: Wed, 9 Apr 2025 14:17:22 -0400 Subject: [PATCH] fix fss node not returning T/F and not handling cases with only one feature set --- tpot/search_spaces/nodes/fss_node.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/tpot/search_spaces/nodes/fss_node.py b/tpot/search_spaces/nodes/fss_node.py index d4b480d0..3b1a2d37 100644 --- a/tpot/search_spaces/nodes/fss_node.py +++ b/tpot/search_spaces/nodes/fss_node.py @@ -109,14 +109,21 @@ def __init__( self, def mutate(self, rng=None): rng = np.random.default_rng(rng) #get list of names not including the current one - names = [name for name in self.names_list if name != self.selected_subset_name] - self.selected_subset_name = rng.choice(names) - self.sel_subset = self.subset_dict[self.selected_subset_name] + if len(self.names_list)>1: + names = [name for name in self.names_list if name != self.selected_subset_name] + self.selected_subset_name = rng.choice(names) + self.sel_subset = self.subset_dict[self.selected_subset_name] + return True + else: + return False def crossover(self, other, rng=None): + if self.selected_subset_name == other.selected_subset_name: + return False self.selected_subset_name = other.selected_subset_name self.sel_subset = other.sel_subset + return True def export_pipeline(self, **kwargs): return FeatureSetSelector(sel_subset=self.sel_subset, name=self.selected_subset_name)