def test_get_hyperparameter_search_space(self): cs = SimpleClassificationPipeline().get_hyperparameter_search_space() self.assertIsInstance(cs, ConfigurationSpace) conditions = cs.get_conditions() forbiddens = cs.get_forbiddens() self.assertEqual( len( cs.get_hyperparameter( 'data_preprocessing:numerical_transformer:rescaling:__choice__' ).choices), 7) self.assertEqual( len(cs.get_hyperparameter('classifier:__choice__').choices), 16) self.assertEqual( len( cs.get_hyperparameter( 'feature_preprocessor:__choice__').choices), 13) hyperparameters = cs.get_hyperparameters() self.assertEqual(167, len(hyperparameters)) # for hp in sorted([str(h) for h in hyperparameters]): # print hp # The four components which are always active are classifier, # feature preprocessor, balancing and data preprocessing pipeline. self.assertEqual(len(hyperparameters) - 7, len(conditions)) self.assertEqual(len(forbiddens), 53)
def test_get_hyperparameter_search_space_preprocessor_contradicts_default_classifier( self): cs = SimpleClassificationPipeline( include={'preprocessor': ['densifier']}, dataset_properties={'sparse': True}).\ get_hyperparameter_search_space() self.assertEqual( cs.get_hyperparameter('classifier:__choice__').default, 'qda') cs = SimpleClassificationPipeline(include={'preprocessor': ['nystroem_sampler']}).\ get_hyperparameter_search_space() self.assertEqual( cs.get_hyperparameter('classifier:__choice__').default, 'sgd')
def test_get_hyperparameter_search_space_preprocessor_contradicts_default_classifier(self): cs = SimpleClassificationPipeline( include={'preprocessor': ['densifier']}, dataset_properties={'sparse': True}).\ get_hyperparameter_search_space() self.assertEqual(cs.get_hyperparameter( 'classifier:__choice__').default_value, 'qda' ) cs = SimpleClassificationPipeline(include={'preprocessor': ['nystroem_sampler']}).\ get_hyperparameter_search_space() self.assertEqual(cs.get_hyperparameter( 'classifier:__choice__').default_value, 'sgd' )
def test_get_hyperparameter_search_space_include_exclude_models(self): cs = SimpleClassificationPipeline(include={'classifier': ['libsvm_svc']})\ .get_hyperparameter_search_space() self.assertEqual(cs.get_hyperparameter('classifier:__choice__'), CategoricalHyperparameter('classifier:__choice__', ['libsvm_svc'])) cs = SimpleClassificationPipeline(exclude={'classifier': ['libsvm_svc']}).\ get_hyperparameter_search_space() self.assertNotIn('libsvm_svc', str(cs)) cs = SimpleClassificationPipeline( include={'preprocessor': ['select_percentile_classification']}).\ get_hyperparameter_search_space() self.assertEqual(cs.get_hyperparameter('preprocessor:__choice__'), CategoricalHyperparameter('preprocessor:__choice__', ['select_percentile_classification'])) cs = SimpleClassificationPipeline( exclude={'preprocessor': ['select_percentile_classification']} ).get_hyperparameter_search_space() self.assertNotIn('select_percentile_classification', str(cs))
def test_get_hyperparameter_search_space(self): cs = SimpleClassificationPipeline().get_hyperparameter_search_space() self.assertIsInstance(cs, ConfigurationSpace) conditions = cs.get_conditions() self.assertEqual(len(cs.get_hyperparameter( 'rescaling:__choice__').choices), 6) self.assertEqual(len(cs.get_hyperparameter( 'classifier:__choice__').choices), 16) self.assertEqual(len(cs.get_hyperparameter( 'preprocessor:__choice__').choices), 13) hyperparameters = cs.get_hyperparameters() self.assertEqual(172, len(hyperparameters)) #for hp in sorted([str(h) for h in hyperparameters]): # print hp # The four parameters which are always active are classifier, # preprocessor, imputation strategy and scaling strategy self.assertEqual(len(hyperparameters) - 6, len(conditions))
def test_get_hyperparameter_search_space(self): cs = SimpleClassificationPipeline().get_hyperparameter_search_space() self.assertIsInstance(cs, ConfigurationSpace) conditions = cs.get_conditions() self.assertEqual( len(cs.get_hyperparameter('rescaling:__choice__').choices), 6) self.assertEqual( len(cs.get_hyperparameter('classifier:__choice__').choices), 15) self.assertEqual( len(cs.get_hyperparameter('preprocessor:__choice__').choices), 13) hyperparameters = cs.get_hyperparameters() self.assertEqual(156, len(hyperparameters)) #for hp in sorted([str(h) for h in hyperparameters]): # print hp # The four parameters which are always active are classifier, # preprocessor, imputation strategy and scaling strategy self.assertEqual(len(hyperparameters) - 6, len(conditions))
def test_get_hyperparameter_search_space_include_exclude_models(self): cs = SimpleClassificationPipeline(include={'classifier': ['libsvm_svc']})\ .get_hyperparameter_search_space() self.assertEqual( cs.get_hyperparameter('classifier:__choice__'), CategoricalHyperparameter('classifier:__choice__', ['libsvm_svc'])) cs = SimpleClassificationPipeline(exclude={'classifier': ['libsvm_svc']}).\ get_hyperparameter_search_space() self.assertNotIn('libsvm_svc', str(cs)) cs = SimpleClassificationPipeline( include={'preprocessor': ['select_percentile_classification']}).\ get_hyperparameter_search_space() self.assertEqual( cs.get_hyperparameter('preprocessor:__choice__'), CategoricalHyperparameter('preprocessor:__choice__', ['select_percentile_classification'])) cs = SimpleClassificationPipeline(exclude={ 'preprocessor': ['select_percentile_classification'] }).get_hyperparameter_search_space() self.assertNotIn('select_percentile_classification', str(cs))