def fit_transform_feature_preprocessing(self, scenario: ASlibScenario, config: Configuration): ''' performs feature preprocessing on a given ASlib scenario wrt to a given configuration Arguments --------- scenario: aslib_scenario.aslib_scenario.ASlibScenario aslib scenario at hand config: Configuration parameter configuration to use for preprocessing Returns ------- list of fitted feature preproccessing objects ''' pipeline = [] fgf = FeatureGroupFiltering() scenario = fgf.fit_transform(scenario, config) imputer = ImputerWrapper() scenario = imputer.fit_transform(scenario, config) scaler = StandardScalerWrapper() scenario = scaler.fit_transform(scenario, config) pca = PCAWrapper() scenario = pca.fit_transform(scenario, config) return scenario, [fgf, imputer, scaler, pca]
def fit_transform_feature_preprocessing(self, scenario: ASlibScenario, config: Configuration): ''' performs feature preprocessing on a given ASlib scenario wrt to a given configuration Arguments --------- scenario: autofolio.data.aslib_scenario.ASlibScenario aslib scenario at hand config: Configuration parameter configuration to use for preprocessing Returns ------- list of fitted feature preproccessing objects ''' pipeline = [] fgf = FeatureGroupFiltering() scenario = fgf.fit_transform(scenario, config) imputer = ImputerWrapper() scenario = imputer.fit_transform(scenario, config) scaler = StandardScalerWrapper() scenario = scaler.fit_transform(scenario, config) pca = PCAWrapper() scenario = pca.fit_transform(scenario, config) return scenario, [fgf, imputer, scaler, pca]
def get_cs(self, scenario: ASlibScenario): ''' returns the parameter configuration space of AutoFolio (based on the automl config space: https://github.com/automl/ConfigSpace) Arguments --------- scenario: aslib_scenario.aslib_scenario.ASlibScenario aslib scenario at hand ''' self.cs = ConfigurationSpace() # add feature steps as binary parameters for fs in scenario.feature_steps: fs_param = CategoricalHyperparameter(name="fgroup_%s" % ( fs), choices=[True, False], default=fs in scenario.feature_steps_default) self.cs.add_hyperparameter(fs_param) # preprocessing PCAWrapper.add_params(self.cs) ImputerWrapper.add_params(self.cs) StandardScalerWrapper.add_params(self.cs) # Pre-Solving if scenario.performance_type[0] == "runtime": Aspeed.add_params( cs=self.cs, cutoff=scenario.algorithm_cutoff_time) # classifiers RandomForest.add_params(self.cs) XGBoost.add_params(self.cs) # regressors RandomForestRegressor.add_params(self.cs) # selectors PairwiseClassifier.add_params(self.cs) PairwiseRegression.add_params(self.cs) self.logger.debug(self.cs) return self.cs
def get_cs(self, scenario: ASlibScenario): ''' returns the parameter configuration space of AutoFolio (based on the automl config space: https://github.com/automl/ConfigSpace) Arguments --------- scenario: autofolio.data.aslib_scenario.ASlibScenario aslib scenario at hand ''' self.cs = ConfigurationSpace() # add feature steps as binary parameters for fs in scenario.feature_steps: fs_param = CategoricalHyperparameter(name="fgroup_%s" % ( fs), choices=[True, False], default=fs in scenario.feature_steps_default) self.cs.add_hyperparameter(fs_param) # preprocessing PCAWrapper.add_params(self.cs) ImputerWrapper.add_params(self.cs) StandardScalerWrapper.add_params(self.cs) # Pre-Solving if scenario.performance_type[0] == "runtime": Aspeed.add_params( cs=self.cs, cutoff=scenario.algorithm_cutoff_time) # classifiers RandomForest.add_params(self.cs) # selectors PairwiseClassifier.add_params(self.cs) return self.cs
def get_cs(self, scenario: ASlibScenario, autofolio_config:dict=None): ''' returns the parameter configuration space of AutoFolio (based on the automl config space: https://github.com/automl/ConfigSpace) Arguments --------- scenario: aslib_scenario.aslib_scenario.ASlibScenario aslib scenario at hand autofolio_config: dict, or None An optional dictionary of configuration options ''' self.cs = ConfigurationSpace() # only allow the feature groups specified in the config file # by default, though, all of the feature groups are allowed. allowed_feature_groups = autofolio_config.get("allowed_feature_groups", scenario.feature_steps) if len(allowed_feature_groups) == 0: msg = "Please ensure at least one feature group is allowed" raise ValueError(msg) if len(allowed_feature_groups) == 1: choices = [True] # if we only have one feature group, it has to be active else: choices = [True, False] default = True for fs in allowed_feature_groups: fs_param = CategoricalHyperparameter(name="fgroup_%s" % (fs), choices=choices, default_value=default) self.cs.add_hyperparameter(fs_param) # preprocessing if autofolio_config.get("pca", True): PCAWrapper.add_params(self.cs) if autofolio_config.get("impute", True): ImputerWrapper.add_params(self.cs) if autofolio_config.get("scale", True): StandardScalerWrapper.add_params(self.cs) # Pre-Solving if scenario.performance_type[0] == "runtime": if autofolio_config.get("presolve", True): Aspeed.add_params( cs=self.cs, cutoff=scenario.algorithm_cutoff_time) if autofolio_config.get("classifier"): # fix parameter cls_choices = [autofolio_config["classifier"]] cls_def = autofolio_config["classifier"] else: cls_choices = ["RandomForest","XGBoost"] cls_def = "RandomForest" classifier = CategoricalHyperparameter( "classifier", choices=cls_choices, default_value=cls_def) self.cs.add_hyperparameter(classifier) RandomForest.add_params(self.cs) XGBoost.add_params(self.cs) if autofolio_config.get("regressor"): # fix parameter reg_choices = [autofolio_config["regressor"]] reg_def = autofolio_config["regressor"] else: reg_choices = ["RandomForestRegressor"] reg_def = "RandomForestRegressor" regressor = CategoricalHyperparameter( "regressor", choices=reg_choices, default_value=reg_def) self.cs.add_hyperparameter(regressor) RandomForestRegressor.add_params(self.cs) # selectors if autofolio_config.get("selector"): # fix parameter sel_choices = [autofolio_config["selector"]] sel_def = autofolio_config["selector"] else: sel_choices = ["PairwiseClassifier","PairwiseRegressor"] sel_def = "PairwiseClassifier" selector = CategoricalHyperparameter( "selector", choices=sel_choices, default_value=sel_def) self.cs.add_hyperparameter(selector) PairwiseClassifier.add_params(self.cs) PairwiseRegression.add_params(self.cs) self.logger.debug(self.cs) return self.cs