示例#1
0
 def test_override_output2(self):
     init_output_schema = self.sk_pca.get_schema("output_transform")
     pca_output = schemas.AnyOf([
         schemas.Array(schemas.Array(schemas.Float())),
         schemas.Array(schemas.Float()),
     ])
     expected = {
         "anyOf": [
             {
                 "type": "array",
                 "items": {
                     "type": "array",
                     "items": {
                         "type": "number"
                     }
                 },
             },
             {
                 "type": "array",
                 "items": {
                     "type": "number"
                 }
             },
         ]
     }
     foo = self.sk_pca.customize_schema(output_transform=pca_output)
     self.assertEqual(foo.get_schema("output_transform"), expected)
     lale.type_checking.validate_is_schema(foo._schemas)
     self.assertEqual(self.sk_pca.get_schema("output_transform"),
                      init_output_schema)
示例#2
0
 def test_override_output2(self):
     init_output_schema = self.sk_pca.get_schema('output')
     pca_output = schemas.AnyOf([
         schemas.Array(schemas.Array(schemas.Float())),
         schemas.Array(schemas.Float())
     ])
     expected = {
         'anyOf': [{
             'type': 'array',
             'items': {
                 'type': 'array',
                 'items': {
                     'type': 'number'
                 }
             }
         }, {
             'type': 'array',
             'items': {
                 'type': 'number'
             }
         }]
     }
     foo = self.sk_pca.customize_schema(output=pca_output)
     self.assertEqual(foo.get_schema('output'), expected)
     helpers.validate_is_schema(foo._schemas)
     self.assertEqual(self.sk_pca.get_schema('output'), init_output_schema)
示例#3
0
 def test_no_max_schema(self):
     pca = PCA().customize_schema(n_components=schemas.Float(min=0.0))
     plan = ((pca & (MinMaxScaler | Normalizer)) >> ConcatFeatures() >>
             (MinMaxScaler | Normalizer) >>
             (LogisticRegression | KNeighborsClassifier))
     from lale.search.search_space import SearchSpaceError
     with self.assertRaises(SearchSpaceError) as ctxt:
         run_hyperopt_on_planned_pipeline(plan)
示例#4
0
 def test_override_object_param(self):
     init = self.sk_pca.get_schema('input_fit')
     expected = {'type': 'object',
                 'required': ['X'],
                 'additionalProperties': False,
                 'properties': {
                     'X': {'type': 'array',
                           'items': {
                               'type': 'number'}}}}
     foo = self.sk_pca.customize_schema(
         input_fit=schemas.Object(required=['X'],
                                  additionalProperties=False,
                                  X=schemas.Array(schemas.Float())))
     self.assertEqual(foo.get_schema('input_fit'), expected)
     lale.type_checking.validate_is_schema(foo.get_schema('input_fit'))
     self.assertEqual(self.sk_pca.get_schema('input_fit'), init)
示例#5
0
 def test_override_float_param(self):
     init = self.ll_pca.hyperparam_schema('tol')
     expected = {'default': 0.1,
                 'type': 'number',
                 'minimum': -10,
                 'maximum': 10,
                 'exclusiveMaximum': True,
                 'exclusiveMinimum': False}
     foo = self.ll_pca.customize_schema(
         tol=schemas.Float(default=0.1,
                           min=-10,
                           max=10,
                           exclusiveMax=True,
                           exclusiveMin=False))
     self.assertEqual(foo.hyperparam_schema('tol'), expected)
     lale.type_checking.validate_is_schema(foo._schemas)
     self.assertEqual(self.ll_pca.hyperparam_schema('tol'), init)
示例#6
0
 def test_override_object_param(self):
     init = self.sk_pca.get_schema("input_fit")
     expected = {
         "type": "object",
         "required": ["X"],
         "additionalProperties": False,
         "properties": {"X": {"type": "array", "items": {"type": "number"}}},
     }
     foo = self.sk_pca.customize_schema(
         input_fit=schemas.Object(
             required=["X"],
             additionalProperties=False,
             X=schemas.Array(schemas.Float()),
         )
     )
     self.assertEqual(foo.get_schema("input_fit"), expected)
     lale.type_checking.validate_is_schema(foo.get_schema("input_fit"))
     self.assertEqual(self.sk_pca.get_schema("input_fit"), init)
示例#7
0
 def test_override_float_param(self):
     init = self.ll_pca.hyperparam_schema("tol")
     expected = {
         "default": 0.1,
         "type": "number",
         "minimum": -10,
         "maximum": 10,
         "exclusiveMaximum": True,
         "exclusiveMinimum": False,
     }
     foo = self.ll_pca.customize_schema(
         tol=schemas.Float(
             default=0.1, min=-10, max=10, exclusiveMax=True, exclusiveMin=False
         )
     )
     self.assertEqual(foo.hyperparam_schema("tol"), expected)
     lale.type_checking.validate_is_schema(foo._schemas)
     self.assertEqual(self.ll_pca.hyperparam_schema("tol"), init)
示例#8
0
 def test_override_object_param(self):
     init = self.sk_pca.get_schema('input_fit')
     expected = {
         '$schema': 'http://json-schema.org/draft-04/schema#',
         'type': 'object',
         'required': ['X'],
         'additionalProperties': False,
         'properties': {
             'X': {
                 'type': 'array',
                 'items': {
                     'type': 'number'
                 }
             }
         }
     }
     foo = self.sk_pca.customize_schema(input_fit=schemas.Object(
         required=['X'],
         additionalProperties=False,
         properties={'X': schemas.Array(schemas.Float())}))
     self.assertEqual(foo.get_schema('input_fit'), expected)
     helpers.validate_is_schema(foo.get_schema('input_fit'))
     self.assertEqual(self.sk_pca.get_schema('input_fit'), init)
示例#9
0
    def test_override_int_param2(self):
        from lale.lib.sklearn import PCA
        from lale.search.schema2search_space import op_to_search_space
        from lale.search.search_space import SearchSpaceNumber, SearchSpaceObject

        pca = PCA.customize_schema(
            relevantToOptimizer=["iterated_power"],
            iterated_power=schemas.Float(
                minimum=0,
                minimumForOptimizer=1,
                maximum=6,
                maximumForOptimizer=5,
                exclusiveMaximumForOptimizer=False,
                exclusiveMinimumForOptimizer=True,
            ),
        )
        search = op_to_search_space(pca)
        assert isinstance(search, SearchSpaceObject)
        num_space = list(search.choices)[0][0]
        assert isinstance(num_space, SearchSpaceNumber)
        self.assertEqual(num_space.minimum, 1)
        self.assertEqual(num_space.maximum, 5)
        self.assertFalse(num_space.exclusiveMaximum)
        self.assertTrue(num_space.exclusiveMinimum)
示例#10
0
    def test_override_float_param1(self):
        from lale.lib.sklearn import PCA
        from lale.search.schema2search_space import op_to_search_space
        from lale.search.search_space import SearchSpaceNumber, SearchSpaceObject

        pca = PCA.customize_schema(
            relevantToOptimizer=["tol"],
            tol=schemas.Float(
                minimum=0.25,
                minimumForOptimizer=0,
                maximum=0.5,
                maximumForOptimizer=1.0,
                exclusiveMaximum=True,
                exclusiveMinimum=False,
            ),
        )
        search = op_to_search_space(pca)
        assert isinstance(search, SearchSpaceObject)
        num_space = list(search.choices)[0][0]
        assert isinstance(num_space, SearchSpaceNumber)
        self.assertEqual(num_space.minimum, 0.25)
        self.assertEqual(num_space.maximum, 0.5)
        self.assertTrue(num_space.exclusiveMaximum)
        self.assertFalse(num_space.exclusiveMinimum)