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)
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))
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))
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") )
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))
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))
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)
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))
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))
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))
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))
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)
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)
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))
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))
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))
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)
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))
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)