Exemplo n.º 1
0
 def test_add_constraint(self):
     init = self.sk_pca.hyperparam_schema()
     expected = {
         'allOf': [{
             'type': 'object',
             'properties': {}
         }, {
             'anyOf': [{
                 'type': 'object',
                 'properties': {
                     'n_components': {
                         'not': {
                             'enum': ['mle']
                         },
                     }
                 },
             }, {
                 'type': 'object',
                 'properties': {
                     'svd_solver': {
                         'enum': ['full', 'auto']
                     },
                 }
             }]
         }]
     }
     foo = self.sk_pca.customize_schema(constraint=schemas.AnyOf([
         schemas.Object(
             {'n_components': schemas.Not(schemas.Enum(['mle']))}),
         schemas.Object({'svd_solver': schemas.Enum(['full', 'auto'])})
     ]))
     self.assertEqual(foo.hyperparam_schema(), expected)
     helpers.validate_is_schema(foo._schemas)
     self.assertEqual(self.sk_pca.hyperparam_schema(), init)
Exemplo n.º 2
0
 def test_add_constraint(self):
     init = self.sk_pca.hyperparam_schema()
     init_expected = {
         "allOf": [
             {
                 "type": "object",
                 "relevantToOptimizer": [],
                 "additionalProperties": False,
                 "properties": {
                     "n_components": {"default": None},
                     "copy": {"default": True},
                     "whiten": {"default": False},
                     "svd_solver": {"default": "auto"},
                     "tol": {"default": 0.0},
                     "iterated_power": {"default": "auto"},
                     "random_state": {"default": None},
                 },
             }
         ]
     }
     self.assertEqual(init, init_expected)
     expected = {
         "allOf": [
             init_expected["allOf"][0],
             {
                 "anyOf": [
                     {
                         "type": "object",
                         "properties": {
                             "n_components": {
                                 "not": {"enum": ["mle"]},
                             }
                         },
                     },
                     {
                         "type": "object",
                         "properties": {
                             "svd_solver": {"enum": ["full", "auto"]},
                         },
                     },
                 ]
             },
         ]
     }
     foo = self.sk_pca.customize_schema(
         constraint=schemas.AnyOf(
             [
                 schemas.Object(n_components=schemas.Not(schemas.Enum(["mle"]))),
                 schemas.Object(svd_solver=schemas.Enum(["full", "auto"])),
             ]
         )
     )
     self.assertEqual(foo.hyperparam_schema(), expected)
     lale.type_checking.validate_is_schema(foo._schemas)
     self.assertEqual(self.sk_pca.hyperparam_schema(), init)
Exemplo n.º 3
0
 def test_override_enum_param(self):
     init = self.ll_pca.hyperparam_schema('svd_solver')
     expected = {'default': 'full', 'enum': ['auto', 'full']}
     foo = self.ll_pca.customize_schema(
         svd_solver=schemas.Enum(default='full', values=['auto', 'full']))
     self.assertEqual(foo.hyperparam_schema('svd_solver'), expected)
     helpers.validate_is_schema(foo._schemas)
     self.assertEqual(self.ll_pca.hyperparam_schema('svd_solver'), init)
Exemplo n.º 4
0
 def test_override_enum_param(self):
     init = self.ll_pca.hyperparam_schema("svd_solver")
     expected = {"default": "full", "enum": ["auto", "full"]}
     foo = self.ll_pca.customize_schema(
         svd_solver=schemas.Enum(default="full", values=["auto", "full"]))
     self.assertEqual(foo.hyperparam_schema("svd_solver"), expected)
     lale.type_checking.validate_is_schema(foo._schemas)
     self.assertEqual(self.ll_pca.hyperparam_schema("svd_solver"), init)
Exemplo n.º 5
0
    def test_classifier(self):
        X_train, y_train = self.X_train, self.y_train
        X_test, y_test = self.X_test, self.y_test
        import importlib
        module_name = ".".join(clf_name.split('.')[0:-1])
        class_name = clf_name.split('.')[-1]
        module = importlib.import_module(module_name)

        class_ = getattr(module, class_name)
        clf = class_()

        #test_schemas_are_schemas
        lale.type_checking.validate_is_schema(clf.input_schema_fit())
        lale.type_checking.validate_is_schema(clf.input_schema_predict())
        lale.type_checking.validate_is_schema(clf.output_schema_predict())
        lale.type_checking.validate_is_schema(clf.hyperparam_schema())

        #test_init_fit_predict
        trained = clf.fit(self.X_train, self.y_train)
        predictions = trained.predict(self.X_test)

        #test_with_hyperopt
        from lale.lib.lale import Hyperopt
        hyperopt = Hyperopt(estimator=clf, max_evals=1)
        trained = hyperopt.fit(self.X_train, self.y_train)
        predictions = trained.predict(self.X_test)

        #test_cross_validation
        from lale.helpers import cross_val_score
        cv_results = cross_val_score(clf, X_train, y_train, cv = 2)
        self.assertEqual(len(cv_results), 2)

        #test_with_gridsearchcv_auto_wrapped
        from sklearn.metrics import accuracy_score, make_scorer
        with warnings.catch_warnings():
            warnings.simplefilter("ignore")
            from lale.lib.sklearn.gradient_boosting_classifier import GradientBoostingClassifierImpl
            if clf._impl_class() == GradientBoostingClassifierImpl:
                #because exponential loss does not work with iris dataset as it is not binary classification
                import lale.schemas as schemas
                clf = clf.customize_schema(loss=schemas.Enum(default='deviance', values=['deviance']))
            grid_search = lale.lib.lale.GridSearchCV(
                estimator=clf, lale_num_samples=1, lale_num_grids=1,
                cv=2, scoring=make_scorer(accuracy_score))
            grid_search.fit(X_train, y_train)

        #test_predict_on_trainable
        trained = clf.fit(X_train, y_train)
        clf.predict(X_train)

        #test_to_json
        clf.to_json()

        #test_in_a_pipeline
        pipeline = NoOp() >> clf
        trained = pipeline.fit(self.X_train, self.y_train)
        predictions = trained.predict(self.X_test)
Exemplo n.º 6
0
 def test_override_any_param(self):
     init = self.ll_pca.hyperparam_schema('iterated_power')
     expected = {'anyOf': [
         {'type': 'integer'},
         {'enum': ['auto', 'full']}],
         'default': 'auto'}
     foo = self.ll_pca.customize_schema(
         iterated_power=schemas.AnyOf([schemas.Int(),
                                       schemas.Enum(['auto', 'full'])], default='auto'))
     self.assertEqual(foo.hyperparam_schema('iterated_power'), expected)
     lale.type_checking.validate_is_schema(foo._schemas)
     self.assertEqual(self.ll_pca.hyperparam_schema('iterated_power'), init)
Exemplo n.º 7
0
 def test_add_constraint(self):
     init = self.sk_pca.hyperparam_schema()
     init_expected = {'allOf': [
         {   'type': 'object',
             'relevantToOptimizer': [],
             'additionalProperties': False,
             'properties': {
                 'n_components': {'default': None},
                 'copy': {'default': True},
                 'whiten': {'default': False},
                 'svd_solver': {'default': 'auto'},
                 'tol': {'default': 0.0},
                 'iterated_power': {'default': 'auto'},
                 'random_state': {'default': None}}}]}
     self.assertEqual(init, init_expected)
     expected = {'allOf': [
         init_expected['allOf'][0],
         {'anyOf': [
             {'type': 'object',
              'properties': {
                  'n_components': {
                      'not': {
                          'enum': ['mle']},
                  }},
              },
             {'type': 'object',
              'properties': {
                  'svd_solver': {
                      'enum': ['full', 'auto']},
              }}]}]}
     foo = self.sk_pca.customize_schema(
         constraint=schemas.AnyOf([
             schemas.Object(n_components=schemas.Not(schemas.Enum(['mle']))),
             schemas.Object(svd_solver=schemas.Enum(['full', 'auto']))
         ]))
     self.assertEqual(foo.hyperparam_schema(), expected)
     lale.type_checking.validate_is_schema(foo._schemas)
     self.assertEqual(self.sk_pca.hyperparam_schema(), init)
Exemplo n.º 8
0
 def test_override_any_param(self):
     init = self.ll_pca.hyperparam_schema("iterated_power")
     expected = {
         "anyOf": [{"type": "integer"}, {"enum": ["auto", "full"]}],
         "default": "auto",
     }
     foo = self.ll_pca.customize_schema(
         iterated_power=schemas.AnyOf(
             [schemas.Int(), schemas.Enum(["auto", "full"])], default="auto"
         )
     )
     self.assertEqual(foo.hyperparam_schema("iterated_power"), expected)
     lale.type_checking.validate_is_schema(foo._schemas)
     self.assertEqual(self.ll_pca.hyperparam_schema("iterated_power"), init)