Esempio n. 1
0
 def test_nested(self):
     self.maxDiff = None
     from lale.json_operator import to_json, from_json
     from lale.lib.lale import NoOp
     from lale.lib.sklearn import LogisticRegression as LR
     from lale.lib.sklearn import PCA
     operator = PCA >> (LR(C=0.09) | NoOp >> LR(C=0.19))
     json_expected = {
       'class': 'lale.operators.PlannedPipeline',
       'state': 'planned',
       'edges': [['pca', 'choice']],
       'steps': {
         'pca': {
           'class': 'lale.lib.sklearn.pca.PCAImpl',
           'state': 'planned',
           'operator': 'PCA', 'label': 'PCA',
           'documentation_url': 'https://lale.readthedocs.io/en/latest/modules/lale.lib.sklearn.pca.html'},
         'choice': {
           'class': 'lale.operators.OperatorChoice',
           'state': 'planned',
           'operator': 'OperatorChoice',
           'steps': {
             'lr_0': {
               'class': 'lale.lib.sklearn.logistic_regression.LogisticRegressionImpl',
               'state': 'trainable',
               'operator': 'LogisticRegression', 'label': 'LR',
               'documentation_url': 'https://lale.readthedocs.io/en/latest/modules/lale.lib.sklearn.logistic_regression.html',
               'hyperparams': {'C': 0.09},
               'is_frozen_trainable': False},
             'pipeline_1': {
               'class': 'lale.operators.TrainablePipeline',
               'state': 'trainable',
               'edges': [['no_op', 'lr_1']],
               'steps': {
                 'no_op': {
                   'class': 'lale.lib.lale.no_op.NoOpImpl',
                   'state': 'trained',
                   'operator': 'NoOp', 'label': 'NoOp',
                   'documentation_url': 'https://lale.readthedocs.io/en/latest/modules/lale.lib.lale.no_op.html',
                   'hyperparams': None,
                   'coefs': None,
                   'is_frozen_trainable': True, 'is_frozen_trained': True},
                 'lr_1': {
                   'class': 'lale.lib.sklearn.logistic_regression.LogisticRegressionImpl',
                   'state': 'trainable',
                   'operator': 'LogisticRegression', 'label': 'LR',
                   'documentation_url': 'https://lale.readthedocs.io/en/latest/modules/lale.lib.sklearn.logistic_regression.html',
                   'hyperparams': {'C': 0.19},
                   'is_frozen_trainable': False}}}}}}}
     json = to_json(operator)
     self.assertEqual(json, json_expected)
     operator_2 = from_json(json)
     json_2 = to_json(operator_2)
     self.assertEqual(json, json_2)
Esempio n. 2
0
    def test_autoai_libs_ta1(self):
        from autoai_libs.cognito.transforms.transform_utils import TA1
        import numpy as np
        import autoai_libs.utils.fc_methods
        from lale.lib.sklearn import LogisticRegression as LR
        ta1 = TA1(
            fun=np.rint,
            name='round',
            datatypes=['numeric'],
            feat_constraints=[autoai_libs.utils.fc_methods.is_not_categorical],
            col_names=['a', 'b', 'c'],
            col_dtypes=[
                np.dtype('float32'),
                np.dtype('float32'),
                np.dtype('float32')
            ])
        pipeline = ta1 >> LR()
        expected = \
"""from autoai_libs.cognito.transforms.transform_utils import TA1
import numpy as np
import autoai_libs.utils.fc_methods
from lale.lib.sklearn import LogisticRegression as LR
import lale
lale.wrap_imported_operators()

ta1 = TA1(fun=np.rint, name='round', datatypes=['numeric'], feat_constraints=[autoai_libs.utils.fc_methods.is_not_categorical], col_names=['a', 'b', 'c'], col_dtypes=[np.dtype('float32'), np.dtype('float32'), np.dtype('float32')])
pipeline = ta1 >> LR()"""
        self._roundtrip(expected, lale.pretty_print.to_string(pipeline))
Esempio n. 3
0
    def test_import_as_2(self):
        from lale.lib.lale import ConcatFeatures as Concat
        from lale.lib.lale import NoOp
        from lale.lib.sklearn import PCA
        from lale.lib.sklearn import KNeighborsClassifier as KNN
        from lale.lib.sklearn import LogisticRegression as LR
        from lale.lib.sklearn import MinMaxScaler as Scaler
        from lale.lib.sklearn import Nystroem

        pca = PCA(copy=False)
        lr = LR(solver="saga", C=0.9)
        pipeline = (Scaler | NoOp) >> (pca & Nystroem) >> Concat >> (KNN | lr)
        expected = """from sklearn.preprocessing import MinMaxScaler as Scaler
from lale.lib.lale import NoOp
from sklearn.decomposition import PCA
from sklearn.kernel_approximation import Nystroem
from lale.lib.lale import ConcatFeatures as Concat
from sklearn.neighbors import KNeighborsClassifier as KNN
from sklearn.linear_model import LogisticRegression as LR
import lale

lale.wrap_imported_operators()
pca = PCA(copy=False)
lr = LR(solver="saga", C=0.9)
pipeline = (Scaler | NoOp) >> (pca & Nystroem) >> Concat >> (KNN | lr)"""
        self._roundtrip(expected, lale.pretty_print.to_string(pipeline))
Esempio n. 4
0
    def test_autoai_libs_tam_1(self):
        import autoai_libs.cognito.transforms.transform_extras
        import numpy as np
        from autoai_libs.cognito.transforms.transform_utils import TAM

        from lale.lib.sklearn import LogisticRegression as LR

        tam = TAM(
            tans_class=autoai_libs.cognito.transforms.transform_extras.IsolationForestAnomaly,
            name="isoforestanomaly",
            col_names=["a", "b", "c"],
            col_dtypes=[np.dtype("float32"), np.dtype("float32"), np.dtype("float32")],
        )
        pipeline = tam >> LR()
        expected = """from autoai_libs.cognito.transforms.transform_utils import TAM
import autoai_libs.cognito.transforms.transform_extras
import numpy as np
from sklearn.linear_model import LogisticRegression as LR
from sklearn.pipeline import make_pipeline

tam = TAM(
    tans_class=autoai_libs.cognito.transforms.transform_extras.IsolationForestAnomaly,
    name="isoforestanomaly",
    col_names=["a", "b", "c"],
    col_dtypes=[
        np.dtype("float32"), np.dtype("float32"), np.dtype("float32"),
    ],
)
pipeline = make_pipeline(tam, LR())"""
        self._roundtrip(
            expected, lale.pretty_print.to_string(pipeline, astype="sklearn")
        )
Esempio n. 5
0
    def test_autoai_libs_cat_encoder(self):
        import numpy as np
        from autoai_libs.transformers.exportable import CatEncoder

        from lale.lib.sklearn import LogisticRegression as LR

        cat_encoder = CatEncoder(
            encoding="ordinal",
            categories="auto",
            dtype=np.float64,
            handle_unknown="error",
        )
        pipeline = cat_encoder >> LR()
        expected = """from autoai_libs.transformers.exportable import CatEncoder
import numpy as np
from sklearn.linear_model import LogisticRegression as LR
import lale

lale.wrap_imported_operators()
cat_encoder = CatEncoder(
    encoding="ordinal",
    categories="auto",
    dtype=np.float64,
    handle_unknown="error",
    sklearn_version_family="23",
)
pipeline = cat_encoder >> LR()"""
        self._roundtrip(expected, lale.pretty_print.to_string(pipeline))
Esempio n. 6
0
    def test_autoai_libs_numpy_replace_unknown_values1(self):
        from autoai_libs.transformers.exportable import NumpyReplaceUnknownValues

        from lale.lib.sklearn import LogisticRegression as LR

        numpy_replace_unknown_values = NumpyReplaceUnknownValues(
            filling_values=float("nan"),
            filling_values_list=[float("nan")],
            known_values_list=[[36, 45, 56, 67, 68, 75, 78, 89]],
            missing_values_reference_list=["", "-", "?",
                                           float("nan")],
        )
        pipeline = numpy_replace_unknown_values >> LR()
        expected = """from autoai_libs.transformers.exportable import NumpyReplaceUnknownValues
from sklearn.linear_model import LogisticRegression as LR
import lale

lale.wrap_imported_operators()
numpy_replace_unknown_values = NumpyReplaceUnknownValues(
    filling_values=float("nan"),
    filling_values_list=[float("nan")],
    missing_values_reference_list=["", "-", "?", float("nan")],
)
pipeline = numpy_replace_unknown_values >> LR()"""
        self._roundtrip(expected, lale.pretty_print.to_string(pipeline))
Esempio n. 7
0
    def test_trainable_individual_op(self):
        self.maxDiff = None
        from lale.json_operator import from_json, to_json
        from lale.lib.sklearn import LogisticRegression as LR

        operator = LR(LR.solver.sag, C=0.1)
        json_expected = {
            "class":
            "lale.lib.sklearn.logistic_regression.LogisticRegressionImpl",
            "state": "trainable",
            "operator": "LogisticRegression",
            "label": "LR",
            "documentation_url":
            "https://lale.readthedocs.io/en/latest/modules/lale.lib.sklearn.logistic_regression.html",
            "hyperparams": {
                "C": 0.1,
                "solver": "sag"
            },
            "is_frozen_trainable": False,
        }
        json = to_json(operator)
        self.assertEqual(json, json_expected)
        operator_2 = from_json(json)
        json_2 = to_json(operator_2)
        self.assertEqual(json_2, json_expected)
Esempio n. 8
0
    def test_autoai_libs_tam_1(self):
        from autoai_libs.cognito.transforms.transform_utils import TAM
        import autoai_libs.cognito.transforms.transform_extras
        import numpy as np
        from lale.lib.sklearn import LogisticRegression as LR
        tam = TAM(tans_class=autoai_libs.cognito.transforms.transform_extras.
                  IsolationForestAnomaly,
                  name='isoforestanomaly',
                  col_names=['a', 'b', 'c'],
                  col_dtypes=[
                      np.dtype('float32'),
                      np.dtype('float32'),
                      np.dtype('float32')
                  ])
        pipeline = tam >> LR()
        expected = \
"""from autoai_libs.cognito.transforms.transform_utils import TAM
import autoai_libs.cognito.transforms.transform_extras
import numpy as np
from lale.lib.sklearn import LogisticRegression as LR
import lale
lale.wrap_imported_operators()

tam = TAM(tans_class=autoai_libs.cognito.transforms.transform_extras.IsolationForestAnomaly, name='isoforestanomaly', col_names=['a', 'b', 'c'], col_dtypes=[np.dtype('float32'), np.dtype('float32'), np.dtype('float32')])
pipeline = tam >> LR()"""
        self._roundtrip(expected, lale.pretty_print.to_string(pipeline))
Esempio n. 9
0
    def test_import_as_2(self):
        from lale.lib.sklearn import MinMaxScaler as Scaler
        from lale.lib.lale import NoOp
        from lale.lib.sklearn import PCA
        from lale.lib.sklearn import Nystroem
        from lale.lib.lale import ConcatFeatures as Concat
        from lale.lib.sklearn import KNeighborsClassifier as KNN
        from lale.lib.sklearn import LogisticRegression as LR
        pca = PCA(copy=False)
        lr = LR(solver='saga', C=0.9)
        pipeline = (Scaler | NoOp) >> (pca & Nystroem) >> Concat >> (KNN | lr)
        expected = \
"""from lale.lib.sklearn import MinMaxScaler as Scaler
from lale.lib.lale import NoOp
from lale.lib.sklearn import PCA
from lale.lib.sklearn import Nystroem
from lale.lib.lale import ConcatFeatures as Concat
from lale.lib.sklearn import KNeighborsClassifier as KNN
from lale.lib.sklearn import LogisticRegression as LR
import lale
lale.wrap_imported_operators()

pca = PCA(copy=False)
lr = LR(solver='saga', C=0.9)
pipeline = (Scaler | NoOp) >> (pca & Nystroem) >> Concat >> (KNN | lr)"""
        self._roundtrip(expected, lale.pretty_print.to_string(pipeline))
Esempio n. 10
0
    def test_nested(self):
        from lale.lib.sklearn import PCA
        from lale.lib.sklearn import LogisticRegression as LR
        from lale.lib.lale import NoOp
        lr_0 = LR(C=0.09)
        lr_1 = LR(C=0.19)
        pipeline = PCA >> (lr_0 | NoOp >> lr_1)
        expected = """from sklearn.decomposition import PCA
from sklearn.linear_model import LogisticRegression as LR
from lale.lib.lale import NoOp
import lale

lale.wrap_imported_operators()
lr_0 = LR(C=0.09)
lr_1 = LR(C=0.19)
pipeline = PCA >> (lr_0 | NoOp >> lr_1)"""
        self._roundtrip(expected, lale.pretty_print.to_string(pipeline))
Esempio n. 11
0
    def test_import_as_1(self):
        from lale.lib.sklearn import LogisticRegression as LR
        pipeline = LR(solver='saga', C=0.9)
        expected = """from lale.lib.sklearn import LogisticRegression as LR
import lale
lale.wrap_imported_operators()

pipeline = LR(solver='saga', C=0.9)"""
        self._roundtrip(expected, lale.pretty_print.to_string(pipeline))
Esempio n. 12
0
 def do1DTest(self, trainable, train_X, train_y, test_X, test_y):
     #Test for 1-D array as input to the transformers
     train_X = train_X[:, 0]
     test_X = test_X[:, 0]
     trainable_pipeline = (trainable & NoOp()) >> ConcatFeatures(
     ) >> float32_transform() >> LR()
     trained_pipeline = trainable_pipeline.fit(train_X, train_y)
     trained_pipeline.predict(test_X)
     hyperopt = Hyperopt(estimator=trainable_pipeline, max_evals=1)
     trained_hyperopt = hyperopt.fit(train_X, train_y)
     trained_hyperopt.predict(test_X)
Esempio n. 13
0
 def doTest(self, trainable, train_X, train_y, test_X, test_y):
     trained = trainable.fit(train_X, train_y)
     transformed = trained.transform(test_X)
     with self.assertWarns(DeprecationWarning):
         trainable.transform(train_X)
     trainable.to_json()
     trainable_pipeline = trainable >> float32_transform() >> LR()
     trained_pipeline = trainable_pipeline.fit(train_X, train_y)
     trained_pipeline.predict(test_X)
     hyperopt = Hyperopt(estimator=trainable_pipeline, max_evals=1)
     trained_hyperopt = hyperopt.fit(train_X, train_y)
     trained_hyperopt.predict(test_X)
Esempio n. 14
0
    def test_autoai_libs_ta1(self):
        import autoai_libs.utils.fc_methods
        import numpy as np
        from autoai_libs.cognito.transforms.transform_utils import TA1

        from lale.lib.sklearn import LogisticRegression as LR

        ta1 = TA1(
            fun=np.rint,
            name="round",
            datatypes=["numeric"],
            feat_constraints=[autoai_libs.utils.fc_methods.is_not_categorical],
            col_names=[
                "a____________",
                "b____________",
                "c____________",
                "d____________",
                "e____________",
            ],
            col_dtypes=[
                np.dtype("float32"),
                np.dtype("float32"),
                np.dtype("float32"),
                np.dtype("float32"),
                np.dtype("float32"),
            ],
        )
        pipeline = ta1 >> LR()
        expected = """from autoai_libs.cognito.transforms.transform_utils import TA1
import numpy as np
import autoai_libs.utils.fc_methods
from sklearn.linear_model import LogisticRegression as LR
import lale

lale.wrap_imported_operators()
ta1 = TA1(
    fun=np.rint,
    name="round",
    datatypes=["numeric"],
    feat_constraints=[autoai_libs.utils.fc_methods.is_not_categorical],
    col_names=[
        "a____________", "b____________", "c____________", "d____________",
        "e____________",
    ],
    col_dtypes=[
        np.dtype("float32"), np.dtype("float32"), np.dtype("float32"),
        np.dtype("float32"), np.dtype("float32"),
    ],
)
pipeline = ta1 >> LR()"""
        self._roundtrip(expected, lale.pretty_print.to_string(pipeline))
Esempio n. 15
0
    def test_autoai_libs_numpy_replace_missing_values(self):
        from autoai_libs.transformers.exportable import NumpyReplaceMissingValues
        from lale.lib.sklearn import LogisticRegression as LR
        numpy_replace_missing_values = NumpyReplaceMissingValues(
            filling_values=float('nan'), missing_values=['?'])
        pipeline = numpy_replace_missing_values >> LR()
        expected = \
"""from autoai_libs.transformers.exportable import NumpyReplaceMissingValues
from lale.lib.sklearn import LogisticRegression as LR
import lale
lale.wrap_imported_operators()

numpy_replace_missing_values = NumpyReplaceMissingValues(filling_values=float('nan'), missing_values=['?'])
pipeline = numpy_replace_missing_values >> LR()"""
        self._roundtrip(expected, lale.pretty_print.to_string(pipeline))
Esempio n. 16
0
    def test_autoai_libs_cat_encoder(self):
        from autoai_libs.transformers.exportable import CatEncoder
        import numpy as np
        from lale.lib.sklearn import LogisticRegression as LR
        cat_encoder = CatEncoder(categories='auto', dtype=np.float64, encoding='ordinal', handle_unknown='error')
        pipeline = cat_encoder >> LR()
        expected = \
"""from autoai_libs.transformers.exportable import CatEncoder
import numpy as np
from lale.lib.sklearn import LogisticRegression as LR
import lale
lale.wrap_imported_operators()

cat_encoder = CatEncoder(categories='auto', dtype=np.float64, encoding='ordinal', handle_unknown='error')
pipeline = cat_encoder >> LR()"""
        self._roundtrip(expected, lale.pretty_print.to_string(pipeline))
Esempio n. 17
0
 def test_trainable_individual_op(self):
     self.maxDiff = None
     from lale.json_operator import to_json, from_json
     from lale.lib.sklearn import LogisticRegression as LR
     operator = LR(LR.solver.sag, C=0.1)
     json_expected = {
         'class': 'lale.lib.sklearn.logistic_regression.LogisticRegressionImpl',
         'state': 'trainable',
         'operator': 'LogisticRegression', 'label': 'LR',
         'documentation_url': 'https://lale.readthedocs.io/en/latest/modules/lale.lib.sklearn.logistic_regression.html',
         'hyperparams': {'C': 0.1, 'solver': 'sag'},
         'is_frozen_trainable': False}
     json = to_json(operator)
     self.assertEqual(json, json_expected)
     operator_2 = from_json(json)
     json_2 = to_json(operator_2)
     self.assertEqual(json_2, json_expected)
Esempio n. 18
0
    def test_autoai_libs_numpy_replace_unknown_values2(self):
        from lale.lib.autoai_libs import NumpyReplaceUnknownValues
        from lale.lib.sklearn import LogisticRegression as LR

        CustomOp = NumpyReplaceUnknownValues.customize_schema(
            known_values_list={
                "anyOf": [
                    {
                        "type": "array",
                        "items": {
                            "laleType": "Any"
                        }
                    },
                    {
                        "enum": [None]
                    },
                ],
                "default":
                None,
            })
        numpy_replace_unknown_values = CustomOp(
            filling_values=float("nan"),
            filling_values_list=[float("nan")],
            known_values_list=[[36, 45, 56, 67, 68, 75, 78, 89]],
            missing_values_reference_list=["", "-", "?",
                                           float("nan")],
        )
        pipeline = numpy_replace_unknown_values >> LR()
        expected = """from autoai_libs.transformers.exportable import NumpyReplaceUnknownValues
from sklearn.linear_model import LogisticRegression as LR
import lale

lale.wrap_imported_operators()
numpy_replace_unknown_values = NumpyReplaceUnknownValues(
    filling_values=float("nan"),
    filling_values_list=[float("nan")],
    known_values_list=[[36, 45, 56, 67, 68, 75, 78, 89]],
    missing_values_reference_list=["", "-", "?", float("nan")],
)
pipeline = numpy_replace_unknown_values >> LR()"""
        self._roundtrip(expected, lale.pretty_print.to_string(pipeline))
Esempio n. 19
0
    def test_nested(self):
        self.maxDiff = None
        from lale.json_operator import from_json, to_json
        from lale.lib.lale import NoOp
        from lale.lib.sklearn import PCA
        from lale.lib.sklearn import LogisticRegression as LR

        operator = PCA >> (LR(C=0.09) | NoOp >> LR(C=0.19))
        json_expected = {
            "class": "lale.operators.PlannedPipeline",
            "state": "planned",
            "edges": [["pca", "choice"]],
            "steps": {
                "pca": {
                    "class": PCA.class_name(),
                    "state": "planned",
                    "operator": "PCA",
                    "label": "PCA",
                    "documentation_url": "https://lale.readthedocs.io/en/latest/modules/lale.lib.sklearn.pca.html",
                },
                "choice": {
                    "class": "lale.operators.OperatorChoice",
                    "state": "planned",
                    "operator": "OperatorChoice",
                    "steps": {
                        "lr_0": {
                            "class": LR.class_name(),
                            "state": "trainable",
                            "operator": "LogisticRegression",
                            "label": "LR",
                            "documentation_url": "https://lale.readthedocs.io/en/latest/modules/lale.lib.sklearn.logistic_regression.html",
                            "hyperparams": {"C": 0.09},
                            "is_frozen_trainable": False,
                        },
                        "pipeline_1": {
                            "class": "lale.operators.TrainablePipeline",
                            "state": "trainable",
                            "edges": [["no_op", "lr_1"]],
                            "steps": {
                                "no_op": {
                                    "class": NoOp.class_name(),
                                    "state": "trained",
                                    "operator": "NoOp",
                                    "label": "NoOp",
                                    "documentation_url": "https://lale.readthedocs.io/en/latest/modules/lale.lib.lale.no_op.html",
                                    "hyperparams": None,
                                    "coefs": None,
                                    "is_frozen_trainable": True,
                                    "is_frozen_trained": True,
                                },
                                "lr_1": {
                                    "class": LR.class_name(),
                                    "state": "trainable",
                                    "operator": "LogisticRegression",
                                    "label": "LR",
                                    "documentation_url": "https://lale.readthedocs.io/en/latest/modules/lale.lib.sklearn.logistic_regression.html",
                                    "hyperparams": {"C": 0.19},
                                    "is_frozen_trainable": False,
                                },
                            },
                        },
                    },
                },
            },
        }
        json = to_json(operator)
        self.assertEqual(json, json_expected)
        operator_2 = from_json(json)
        json_2 = to_json(operator_2)
        self.assertEqual(json, json_2)