Пример #1
0
    def test_customize_schema(self):
        from lale.lib.sklearn import LogisticRegression

        pipeline = LogisticRegression.customize_schema(
            solver={"enum": ["lbfgs", "liblinear"], "default": "liblinear"},
            tol={
                "type": "number",
                "minimum": 0.00001,
                "maximum": 0.1,
                "default": 0.0001,
            },
        )(solver="lbfgs")
        expected = """from sklearn.linear_model import LogisticRegression
import lale

lale.wrap_imported_operators()
pipeline = LogisticRegression.customize_schema(
    solver={"enum": ["lbfgs", "liblinear"], "default": "liblinear"},
    tol={
        "type": "number",
        "minimum": 1e-05,
        "maximum": 0.1,
        "default": 0.0001,
    },
)(solver="lbfgs")"""
        self._roundtrip(expected, pipeline.pretty_print(customize_schema=True))
Пример #2
0
    def test_customize_schema(self):
        from lale.json_operator import from_json, to_json
        from lale.lib.sklearn import LogisticRegression as LR

        operator = LR.customize_schema(
            solver={
                "enum": ["lbfgs", "liblinear"],
                "default": "liblinear"
            },
            tol={
                "type": "number",
                "minimum": 0.00001,
                "maximum": 0.1,
                "default": 0.0001,
            },
        )
        json_expected = {
            "class": LR.class_name(),
            "state": "planned",
            "operator": "LogisticRegression",
            "label": "LR",
            "documentation_url":
            "https://lale.readthedocs.io/en/latest/modules/lale.lib.sklearn.logistic_regression.html",
            "customize_schema": {
                "properties": {
                    "hyperparams": {
                        "allOf": [{
                            "solver": {
                                "default": "liblinear",
                                "enum": ["lbfgs", "liblinear"],
                            },
                            "tol": {
                                "type": "number",
                                "minimum": 0.00001,
                                "maximum": 0.1,
                                "default": 0.0001,
                            },
                        }]
                    }
                }
            },
        }
        json = to_json(operator)
        self.maxDiff = None
        self.assertEqual(json, json_expected)
        operator_2 = from_json(json)
        json_2 = to_json(operator_2)
        self.assertEqual(json, json_2)
Пример #3
0
    def test_disable_schema_validation_pipeline(self):
        os.environ["LALE_DISABLE_SCHEMA_VALIDATION"]='True'
        from lale.lib.sklearn import PCA, LogisticRegression
        import lale.schemas as schemas

        lr_input = schemas.Object(required=['X', 'y'], X=schemas.AnyOf([
            schemas.Array(
                schemas.Array(
                    schemas.String())),
            schemas.Array(
                schemas.String())]),
            y=schemas.Array(schemas.String()))

        foo = LogisticRegression.customize_schema(input_fit=lr_input)
        abc = foo()
        pipeline = PCA() >> abc
        trained_pipeline = pipeline.fit(self.X_train, self.y_train)
        trained_pipeline.predict(self.X_test)
        os.environ["LALE_DISABLE_SCHEMA_VALIDATION"]='False'
Пример #4
0
    def test_enable_schema_validation_pipeline(self):
        with EnableSchemaValidation():
            import lale.schemas as schemas
            from lale.lib.sklearn import PCA, LogisticRegression

            lr_input = schemas.Object(
                required=["X", "y"],
                X=schemas.AnyOf([
                    schemas.Array(schemas.Array(schemas.String())),
                    schemas.Array(schemas.String()),
                ]),
                y=schemas.Array(schemas.String()),
            )

            foo = LogisticRegression.customize_schema(input_fit=lr_input)
            abc = foo()
            pipeline = PCA() >> abc
            with self.assertRaises(ValueError):
                trained_pipeline = pipeline.fit(self.X_train, self.y_train)
                trained_pipeline.predict(self.X_test)
Пример #5
0
    def test_disable_schema_validation_pipeline(self):
        existing_flag = disable_data_schema_validation
        set_disable_data_schema_validation(True)
        import lale.schemas as schemas
        from lale.lib.sklearn import PCA, LogisticRegression

        lr_input = schemas.Object(
            required=["X", "y"],
            X=schemas.AnyOf([
                schemas.Array(schemas.Array(schemas.String())),
                schemas.Array(schemas.String()),
            ]),
            y=schemas.Array(schemas.String()),
        )

        foo = LogisticRegression.customize_schema(input_fit=lr_input)
        abc = foo()
        pipeline = PCA() >> abc
        trained_pipeline = pipeline.fit(self.X_train, self.y_train)
        trained_pipeline.predict(self.X_test)
        set_disable_data_schema_validation(existing_flag)
Пример #6
0
        if i > max_evals:
            assert False
        try:
            X, y = data_loader()
            clf = Hyperopt(estimator=pipeline, max_evals=i, scoring=scoring)
            trained_pipeline = clf.fit(X, y)
            trained_pipeline.predict(X)
            return True
        except Exception:
            test(3 * i)

    test(1)


kls = inspect.getmembers(autogen, lambda m: isinstance(m, Operator))
LR = LogisticRegression.customize_schema(relevantToOptimizer=[])

classifiers = [
    "AdaBoostClassifier",
    "BernoulliNB",
    "CalibratedClassifierCV",
    "ComplementNB",
    "DecisionTreeClassifier",
    "ExtraTreesClassifier",
    "GaussianNB",
    "GaussianProcessClassifier",
    "GradientBoostingClassifier",
    "KNeighborsClassifier",
    "LGBMClassifier",
    "LabelPropagation",
    "LabelSpreading",