From b88a988f718ab4ac76e3872f088aed032c92ace9 Mon Sep 17 00:00:00 2001 From: StrikerRUS Date: Sun, 3 May 2020 23:10:22 +0300 Subject: [PATCH 1/3] fix future warning by avoiding importing private modules --- README.md | 4 +- tests/assemblers/test_ensemble.py | 9 +- tests/assemblers/test_linear.py | 15 +-- tests/assemblers/test_svm.py | 14 +-- tests/assemblers/test_tree.py | 8 +- tests/e2e/test_cli.py | 4 +- tests/e2e/test_e2e.py | 151 +++++++++++++++--------------- tests/test_cli.py | 4 +- tests/utils.py | 6 +- tools/generate_code_examples.py | 21 +++-- 10 files changed, 118 insertions(+), 118 deletions(-) diff --git a/README.md b/README.md index 1ab3b619..5b0fe585 100644 --- a/README.md +++ b/README.md @@ -82,13 +82,13 @@ The output is consistent with the output of the `predict_proba` method of `Decis Here's a simple example of how a linear model trained in Python environment can be represented in Java code: ```python from sklearn.datasets import load_boston -from sklearn import linear_model +from sklearn.linear_model import LinearRegression import m2cgen as m2c boston = load_boston() X, y = boston.data, boston.target -estimator = linear_model.LinearRegression() +estimator = LinearRegression() estimator.fit(X, y) code = m2c.export_to_java(estimator) diff --git a/tests/assemblers/test_ensemble.py b/tests/assemblers/test_ensemble.py index 7c938029..33fa03ee 100644 --- a/tests/assemblers/test_ensemble.py +++ b/tests/assemblers/test_ensemble.py @@ -1,11 +1,11 @@ -from sklearn import ensemble +from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier from m2cgen import assemblers, ast from tests import utils def test_single_condition(): - estimator = ensemble.RandomForestRegressor(n_estimators=2, random_state=1) + estimator = RandomForestRegressor(n_estimators=2, random_state=1) estimator.fit([[1], [2]], [1, 2]) @@ -30,7 +30,7 @@ def test_single_condition(): def test_two_conditions(): - estimator = ensemble.RandomForestRegressor(n_estimators=2, random_state=13) + estimator = RandomForestRegressor(n_estimators=2, random_state=13) estimator.fit([[1], [2], [3]], [1, 2, 3]) @@ -61,8 +61,7 @@ def test_two_conditions(): def test_multi_class(): - estimator = ensemble.RandomForestClassifier( - n_estimators=2, random_state=13) + estimator = RandomForestClassifier(n_estimators=2, random_state=13) estimator.fit([[1], [2], [3]], [1, -1, 1]) diff --git a/tests/assemblers/test_linear.py b/tests/assemblers/test_linear.py index 82c3ec99..70552e5e 100644 --- a/tests/assemblers/test_linear.py +++ b/tests/assemblers/test_linear.py @@ -4,7 +4,8 @@ from statsmodels.regression.process_regression import ProcessMLE from lightning.regression import AdaGradRegressor from lightning.classification import AdaGradClassifier -from sklearn import linear_model +from sklearn.linear_model import \ + LinearRegression, LogisticRegression, RANSACRegressor from sklearn.dummy import DummyRegressor from sklearn.tree import DecisionTreeRegressor @@ -13,7 +14,7 @@ def test_single_feature(): - estimator = linear_model.LinearRegression() + estimator = LinearRegression() estimator.coef_ = np.array([1]) estimator.intercept_ = np.array([3]) @@ -32,7 +33,7 @@ def test_single_feature(): def test_two_features(): - estimator = linear_model.LinearRegression() + estimator = LinearRegression() estimator.coef_ = np.array([1, 2]) estimator.intercept_ = np.array([3]) @@ -57,7 +58,7 @@ def test_two_features(): def test_multi_class(): - estimator = linear_model.LogisticRegression() + estimator = LogisticRegression() estimator.coef_ = np.array([[1, 2], [3, 4], [5, 6]]) estimator.intercept_ = np.array([7, 8, 9]) @@ -109,7 +110,7 @@ def test_multi_class(): def test_binary_class(): - estimator = linear_model.LogisticRegression() + estimator = LogisticRegression() estimator.coef_ = np.array([[1, 2]]) estimator.intercept_ = np.array([3]) @@ -135,7 +136,7 @@ def test_binary_class(): def test_ransac_custom_base_estimator(): base_estimator = DecisionTreeRegressor() - estimator = linear_model.RANSACRegressor( + estimator = RANSACRegressor( base_estimator=base_estimator, random_state=1) estimator.fit([[1], [2], [3]], [1, 2, 3]) @@ -157,7 +158,7 @@ def test_ransac_custom_base_estimator(): @pytest.mark.xfail(raises=NotImplementedError, strict=True) def test_ransac_unknown_base_estimator(): base_estimator = DummyRegressor() - estimator = linear_model.RANSACRegressor( + estimator = RANSACRegressor( base_estimator=base_estimator, random_state=1) estimator.fit([[1], [2], [3]], [1, 2, 3]) diff --git a/tests/assemblers/test_svm.py b/tests/assemblers/test_svm.py index 8e045a78..7b0c9046 100644 --- a/tests/assemblers/test_svm.py +++ b/tests/assemblers/test_svm.py @@ -1,13 +1,13 @@ import pytest import numpy as np -from sklearn import svm +from sklearn.svm import SVC from lightning.classification import KernelSVC from m2cgen import assemblers, ast from tests import utils def test_rbf_kernel(): - estimator = svm.SVC(kernel="rbf", random_state=1, gamma=2.0) + estimator = SVC(kernel="rbf", random_state=1, gamma=2.0) estimator.fit([[1], [2]], [1, 2]) @@ -22,7 +22,7 @@ def test_rbf_kernel(): def test_linear_kernel(): - estimator = svm.SVC(kernel="linear", random_state=1) + estimator = SVC(kernel="linear", random_state=1) estimator.fit([[1], [2]], [1, 2]) @@ -43,7 +43,7 @@ def kernel_ast(sup_vec_value): def test_sigmoid_kernel(): - estimator = svm.SVC(kernel="sigmoid", random_state=1, gamma=2.0) + estimator = SVC(kernel="sigmoid", random_state=1, gamma=2.0) estimator.fit([[1], [2]], [1, 2]) @@ -71,7 +71,7 @@ def kernel_ast(sup_vec_value): def test_poly_kernel(): - estimator = svm.SVC(kernel="poly", random_state=1, gamma=2.0, degree=2) + estimator = SVC(kernel="poly", random_state=1, gamma=2.0, degree=2) estimator.fit([[1], [2]], [1, 2]) @@ -137,7 +137,7 @@ def kernel_ast(sup_vec_value): @pytest.mark.xfail(raises=ValueError, strict=True) def test_unknown_kernel(): - estimator = svm.SVC(kernel=lambda x, y: np.transpose(x) * y) + estimator = SVC(kernel=lambda x, y: np.transpose(x) * y) estimator.fit([[1], [2]], [1, 2]) @@ -146,7 +146,7 @@ def test_unknown_kernel(): def test_multi_class_rbf_kernel(): - estimator = svm.SVC(kernel="rbf", random_state=1, gamma=2.0) + estimator = SVC(kernel="rbf", random_state=1, gamma=2.0) estimator.fit([[1], [2], [3]], [1, 2, 3]) diff --git a/tests/assemblers/test_tree.py b/tests/assemblers/test_tree.py index 360d3daa..4d9defd4 100644 --- a/tests/assemblers/test_tree.py +++ b/tests/assemblers/test_tree.py @@ -1,11 +1,11 @@ -from sklearn import tree +from sklearn.tree import DecisionTreeRegressor, DecisionTreeClassifier from m2cgen import assemblers, ast from tests import utils def test_single_condition(): - estimator = tree.DecisionTreeRegressor() + estimator = DecisionTreeRegressor() estimator.fit([[1], [2]], [1, 2]) @@ -24,7 +24,7 @@ def test_single_condition(): def test_two_conditions(): - estimator = tree.DecisionTreeRegressor() + estimator = DecisionTreeRegressor() estimator.fit([[1], [2], [3]], [1, 2, 3]) @@ -49,7 +49,7 @@ def test_two_conditions(): def test_multi_class(): - estimator = tree.DecisionTreeClassifier() + estimator = DecisionTreeClassifier() estimator.fit([[1], [2], [3]], [0, 1, 2]) diff --git a/tests/e2e/test_cli.py b/tests/e2e/test_cli.py index aa7b2369..8b4b4199 100644 --- a/tests/e2e/test_cli.py +++ b/tests/e2e/test_cli.py @@ -3,7 +3,7 @@ import platform import subprocess -from sklearn import linear_model +from sklearn.linear_model import LinearRegression from tests import utils @@ -22,7 +22,7 @@ def execute_test(exec_args): def _prepare_pickled_model(tmp_path): p = tmp_path / "model.pickle" - estimator = linear_model.LinearRegression() + estimator = LinearRegression() utils.get_regression_model_trainer()(estimator) p.write_bytes(pickle.dumps(estimator)) diff --git a/tests/e2e/test_e2e.py b/tests/e2e/test_e2e.py index f370a01c..4aa22c4b 100644 --- a/tests/e2e/test_e2e.py +++ b/tests/e2e/test_e2e.py @@ -7,9 +7,19 @@ from statsmodels.regression.process_regression import ProcessMLE import lightning.classification as light_clf import lightning.regression as light_reg -from sklearn import linear_model, svm -from sklearn import tree -from sklearn import ensemble +from sklearn.linear_model import \ + ARDRegression, BayesianRidge, ElasticNet, ElasticNetCV, HuberRegressor,\ + Lars, LarsCV, Lasso, LassoCV, LassoLars, LassoLarsCV, LassoLarsIC,\ + LinearRegression, OrthogonalMatchingPursuit, OrthogonalMatchingPursuitCV,\ + PassiveAggressiveRegressor, RANSACRegressor, Ridge, RidgeCV, SGDRegressor,\ + TheilSenRegressor, LogisticRegression, LogisticRegressionCV,\ + PassiveAggressiveClassifier, Perceptron, RidgeClassifier,\ + RidgeClassifierCV, SGDClassifier +from sklearn.svm import LinearSVR, LinearSVC, NuSVR, SVR, NuSVC, SVC +from sklearn.tree import DecisionTreeRegressor, ExtraTreeRegressor,\ + DecisionTreeClassifier, ExtraTreeClassifier +from sklearn.ensemble import ExtraTreesRegressor, RandomForestRegressor,\ + ExtraTreesClassifier, RandomForestClassifier from tests import utils from tests.e2e import executors @@ -201,9 +211,9 @@ def classification_binary_random(model, test_fraction=0.02): xgboost.XGBClassifier(**XGBOOST_PARAMS_LARGE)), # Sklearn Linear SVM - regression(svm.LinearSVR(random_state=RANDOM_SEED)), - classification(svm.LinearSVC(random_state=RANDOM_SEED)), - classification_binary(svm.LinearSVC(random_state=RANDOM_SEED)), + regression(LinearSVR(random_state=RANDOM_SEED)), + classification(LinearSVC(random_state=RANDOM_SEED)), + classification_binary(LinearSVC(random_state=RANDOM_SEED)), # Lightning Linear SVM regression(light_reg.LinearSVR(random_state=RANDOM_SEED)), @@ -217,19 +227,19 @@ def classification_binary_random(model, test_fraction=0.02): criterion="auc", random_state=RANDOM_SEED)), # Sklearn SVM - regression(svm.NuSVR(kernel="rbf")), - regression(svm.SVR(kernel="rbf")), + regression(NuSVR(kernel="rbf")), + regression(SVR(kernel="rbf")), - classification(svm.NuSVC(kernel="rbf", **SVC_PARAMS)), - classification(svm.SVC(kernel="rbf", **SVC_PARAMS)), + classification(NuSVC(kernel="rbf", **SVC_PARAMS)), + classification(SVC(kernel="rbf", **SVC_PARAMS)), - classification_binary(svm.NuSVC(kernel="rbf", **SVC_PARAMS)), - classification_binary(svm.SVC(kernel="linear", **SVC_PARAMS)), - classification_binary(svm.SVC( + classification_binary(NuSVC(kernel="rbf", **SVC_PARAMS)), + classification_binary(SVC(kernel="linear", **SVC_PARAMS)), + classification_binary(SVC( kernel="poly", C=1.5, degree=2, gamma=0.1, coef0=2.0, **SVC_PARAMS)), - classification_binary(svm.SVC(kernel="rbf", **SVC_PARAMS)), - classification_binary(svm.SVC(kernel="sigmoid", **SVC_PARAMS)), + classification_binary(SVC(kernel="rbf", **SVC_PARAMS)), + classification_binary(SVC(kernel="sigmoid", **SVC_PARAMS)), # Lightning SVM classification(light_clf.KernelSVC( @@ -248,30 +258,29 @@ def classification_binary_random(model, test_fraction=0.02): kernel="cosine", random_state=RANDOM_SEED)), # Sklearn Linear Regression - regression(linear_model.ARDRegression()), - regression(linear_model.BayesianRidge()), - regression(linear_model.ElasticNet(random_state=RANDOM_SEED)), - regression(linear_model.ElasticNetCV(random_state=RANDOM_SEED)), - regression(linear_model.HuberRegressor()), - regression(linear_model.Lars()), - regression(linear_model.LarsCV()), - regression(linear_model.Lasso(random_state=RANDOM_SEED)), - regression(linear_model.LassoCV(random_state=RANDOM_SEED)), - regression(linear_model.LassoLars()), - regression(linear_model.LassoLarsCV()), - regression(linear_model.LassoLarsIC()), - regression(linear_model.LinearRegression()), - regression(linear_model.OrthogonalMatchingPursuit()), - regression(linear_model.OrthogonalMatchingPursuitCV()), - regression(linear_model.PassiveAggressiveRegressor( + regression(ARDRegression()), + regression(BayesianRidge()), + regression(ElasticNet(random_state=RANDOM_SEED)), + regression(ElasticNetCV(random_state=RANDOM_SEED)), + regression(HuberRegressor()), + regression(Lars()), + regression(LarsCV()), + regression(Lasso(random_state=RANDOM_SEED)), + regression(LassoCV(random_state=RANDOM_SEED)), + regression(LassoLars()), + regression(LassoLarsCV()), + regression(LassoLarsIC()), + regression(LinearRegression()), + regression(OrthogonalMatchingPursuit()), + regression(OrthogonalMatchingPursuitCV()), + regression(PassiveAggressiveRegressor(random_state=RANDOM_SEED)), + regression(RANSACRegressor( + base_estimator=ExtraTreeRegressor(**TREE_PARAMS), random_state=RANDOM_SEED)), - regression(linear_model.RANSACRegressor( - base_estimator=tree.ExtraTreeRegressor(**TREE_PARAMS), - random_state=RANDOM_SEED)), - regression(linear_model.Ridge(random_state=RANDOM_SEED)), - regression(linear_model.RidgeCV()), - regression(linear_model.SGDRegressor(random_state=RANDOM_SEED)), - regression(linear_model.TheilSenRegressor(random_state=RANDOM_SEED)), + regression(Ridge(random_state=RANDOM_SEED)), + regression(RidgeCV()), + regression(SGDRegressor(random_state=RANDOM_SEED)), + regression(TheilSenRegressor(random_state=RANDOM_SEED)), # Statsmodels Linear Regression regression(utils.StatsmodelsSklearnLikeWrapper( @@ -337,33 +346,22 @@ def classification_binary_random(model, test_fraction=0.02): regression(light_reg.SDCARegressor(random_state=RANDOM_SEED)), # Sklearn Linear Classifiers - classification(linear_model.LogisticRegression( - random_state=RANDOM_SEED)), - classification(linear_model.LogisticRegressionCV( - random_state=RANDOM_SEED)), - classification(linear_model.PassiveAggressiveClassifier( - random_state=RANDOM_SEED)), - classification(linear_model.Perceptron( - random_state=RANDOM_SEED)), - classification(linear_model.RidgeClassifier( - random_state=RANDOM_SEED)), - classification(linear_model.RidgeClassifierCV()), - classification(linear_model.SGDClassifier( - random_state=RANDOM_SEED)), - - classification_binary(linear_model.LogisticRegression( - random_state=RANDOM_SEED)), - classification_binary(linear_model.LogisticRegressionCV( - random_state=RANDOM_SEED)), - classification_binary(linear_model.PassiveAggressiveClassifier( - random_state=RANDOM_SEED)), - classification_binary(linear_model.Perceptron( - random_state=RANDOM_SEED)), - classification_binary(linear_model.RidgeClassifier( - random_state=RANDOM_SEED)), - classification_binary(linear_model.RidgeClassifierCV()), - classification_binary(linear_model.SGDClassifier( + classification(LogisticRegression(random_state=RANDOM_SEED)), + classification(LogisticRegressionCV(random_state=RANDOM_SEED)), + classification(PassiveAggressiveClassifier(random_state=RANDOM_SEED)), + classification(Perceptron(random_state=RANDOM_SEED)), + classification(RidgeClassifier(random_state=RANDOM_SEED)), + classification(RidgeClassifierCV()), + classification(SGDClassifier(random_state=RANDOM_SEED)), + + classification_binary(LogisticRegression(random_state=RANDOM_SEED)), + classification_binary(LogisticRegressionCV(random_state=RANDOM_SEED)), + classification_binary(PassiveAggressiveClassifier( random_state=RANDOM_SEED)), + classification_binary(Perceptron(random_state=RANDOM_SEED)), + classification_binary(RidgeClassifier(random_state=RANDOM_SEED)), + classification_binary(RidgeClassifierCV()), + classification_binary(SGDClassifier(random_state=RANDOM_SEED)), # Lightning Linear Classifiers classification(light_clf.AdaGradClassifier( @@ -400,26 +398,25 @@ def classification_binary_random(model, test_fraction=0.02): random_state=RANDOM_SEED)), # Decision trees - regression(tree.DecisionTreeRegressor(**TREE_PARAMS)), - regression(tree.ExtraTreeRegressor(**TREE_PARAMS)), + regression(DecisionTreeRegressor(**TREE_PARAMS)), + regression(ExtraTreeRegressor(**TREE_PARAMS)), - classification(tree.DecisionTreeClassifier(**TREE_PARAMS)), - classification(tree.ExtraTreeClassifier(**TREE_PARAMS)), + classification(DecisionTreeClassifier(**TREE_PARAMS)), + classification(ExtraTreeClassifier(**TREE_PARAMS)), - classification_binary(tree.DecisionTreeClassifier(**TREE_PARAMS)), - classification_binary(tree.ExtraTreeClassifier(**TREE_PARAMS)), + classification_binary(DecisionTreeClassifier(**TREE_PARAMS)), + classification_binary(ExtraTreeClassifier(**TREE_PARAMS)), # Random forest - regression(ensemble.ExtraTreesRegressor(**FOREST_PARAMS)), - regression(ensemble.RandomForestRegressor(**FOREST_PARAMS)), + regression(ExtraTreesRegressor(**FOREST_PARAMS)), + regression(RandomForestRegressor(**FOREST_PARAMS)), - classification(ensemble.ExtraTreesClassifier(**FOREST_PARAMS)), - classification(ensemble.RandomForestClassifier(**FOREST_PARAMS)), + classification(ExtraTreesClassifier(**FOREST_PARAMS)), + classification(RandomForestClassifier(**FOREST_PARAMS)), - classification_binary(ensemble.ExtraTreesClassifier(**FOREST_PARAMS)), - classification_binary( - ensemble.RandomForestClassifier(**FOREST_PARAMS)), + classification_binary(ExtraTreesClassifier(**FOREST_PARAMS)), + classification_binary(RandomForestClassifier(**FOREST_PARAMS)), ], # Following is the list of extra tests for languages/models which are diff --git a/tests/test_cli.py b/tests/test_cli.py index 9bb615c9..90e43b42 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -3,7 +3,7 @@ import sys from _pytest import capture -from sklearn import linear_model +from sklearn.linear_model import LinearRegression from unittest import mock from m2cgen import cli @@ -21,7 +21,7 @@ def _get_mock_args(indent=4, function_name=None, namespace=None, def _get_pickled_trained_model(): - estimator = linear_model.LinearRegression() + estimator = LinearRegression() utils.get_regression_model_trainer()(estimator) infile = io.BytesIO() diff --git a/tests/utils.py b/tests/utils.py index d844c5ab..6203b336 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -13,9 +13,9 @@ from lightning.impl.base import BaseClassifier as LightBaseClassifier from sklearn import datasets from sklearn.base import BaseEstimator, RegressorMixin, clone -from sklearn.ensemble import forest +from sklearn.ensemble._forest import ForestClassifier from sklearn.utils import shuffle -from sklearn.linear_model.base import LinearClassifierMixin +from sklearn.linear_model._base import LinearClassifierMixin from sklearn.tree import DecisionTreeClassifier from sklearn.svm import SVC, NuSVC from xgboost import XGBClassifier @@ -120,7 +120,7 @@ def __call__(self, estimator): y_pred = estimator.predict_proba(self.X_test.astype(np.float32)) elif isinstance( estimator, - (forest.ForestClassifier, XGBClassifier, LGBMClassifier)): + (ForestClassifier, XGBClassifier, LGBMClassifier)): y_pred = estimator.predict_proba(self.X_test) else: y_pred = estimator.predict(self.X_test) diff --git a/tools/generate_code_examples.py b/tools/generate_code_examples.py index c08f49a2..11bcbd84 100644 --- a/tools/generate_code_examples.py +++ b/tools/generate_code_examples.py @@ -14,7 +14,10 @@ import lightgbm import xgboost -from sklearn import linear_model, tree, ensemble, svm +from sklearn.linear_model import LinearRegression, LogisticRegression +from sklearn.tree import DecisionTreeRegressor, DecisionTreeClassifier +from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier +from sklearn.svm import NuSVR, NuSVC import m2cgen as m2c from tests import utils @@ -49,32 +52,32 @@ EXAMPLE_MODELS = [ ( "regression", "linear", - linear_model.LinearRegression(), + LinearRegression(), utils.get_regression_model_trainer(), ), ( "classification", "linear", - linear_model.LogisticRegression(random_state=RANDOM_SEED), + LogisticRegression(random_state=RANDOM_SEED), utils.get_classification_model_trainer(), ), ( "regression", "decision_tree", - tree.DecisionTreeRegressor(**TREE_PARAMS), + DecisionTreeRegressor(**TREE_PARAMS), utils.get_regression_model_trainer(), ), ( "classification", "decision_tree", - tree.DecisionTreeClassifier(**TREE_PARAMS), + DecisionTreeClassifier(**TREE_PARAMS), utils.get_classification_model_trainer(), ), ( "regression", "random_forest", - ensemble.RandomForestRegressor(**FOREST_PARAMS), + RandomForestRegressor(**FOREST_PARAMS), utils.get_regression_model_trainer(), ), ( "classification", "random_forest", - ensemble.RandomForestClassifier(**FOREST_PARAMS), + RandomForestClassifier(**FOREST_PARAMS), utils.get_classification_model_trainer(), ), ( @@ -99,12 +102,12 @@ ), ( "regression", "svm", - svm.NuSVR(nu=0.1), + NuSVR(nu=0.1), utils.get_regression_model_trainer(), ), ( "classification", "svm", - svm.NuSVC(**SVC_PARAMS), + NuSVC(**SVC_PARAMS), utils.get_classification_model_trainer(), ), ] From 01e5f3b02b55d9dd9878375e81ecd07b284a512a Mon Sep 17 00:00:00 2001 From: StrikerRUS Date: Tue, 5 May 2020 19:51:23 +0300 Subject: [PATCH 2/3] Revert "fix future warning by avoiding importing private modules" This reverts commit b88a988f718ab4ac76e3872f088aed032c92ace9. --- README.md | 4 +- tests/assemblers/test_ensemble.py | 9 +- tests/assemblers/test_linear.py | 15 ++- tests/assemblers/test_svm.py | 14 +-- tests/assemblers/test_tree.py | 8 +- tests/e2e/test_cli.py | 4 +- tests/e2e/test_e2e.py | 151 +++++++++++++++--------------- tests/test_cli.py | 4 +- tests/utils.py | 6 +- tools/generate_code_examples.py | 21 ++--- 10 files changed, 118 insertions(+), 118 deletions(-) diff --git a/README.md b/README.md index 5b0fe585..1ab3b619 100644 --- a/README.md +++ b/README.md @@ -82,13 +82,13 @@ The output is consistent with the output of the `predict_proba` method of `Decis Here's a simple example of how a linear model trained in Python environment can be represented in Java code: ```python from sklearn.datasets import load_boston -from sklearn.linear_model import LinearRegression +from sklearn import linear_model import m2cgen as m2c boston = load_boston() X, y = boston.data, boston.target -estimator = LinearRegression() +estimator = linear_model.LinearRegression() estimator.fit(X, y) code = m2c.export_to_java(estimator) diff --git a/tests/assemblers/test_ensemble.py b/tests/assemblers/test_ensemble.py index 33fa03ee..7c938029 100644 --- a/tests/assemblers/test_ensemble.py +++ b/tests/assemblers/test_ensemble.py @@ -1,11 +1,11 @@ -from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier +from sklearn import ensemble from m2cgen import assemblers, ast from tests import utils def test_single_condition(): - estimator = RandomForestRegressor(n_estimators=2, random_state=1) + estimator = ensemble.RandomForestRegressor(n_estimators=2, random_state=1) estimator.fit([[1], [2]], [1, 2]) @@ -30,7 +30,7 @@ def test_single_condition(): def test_two_conditions(): - estimator = RandomForestRegressor(n_estimators=2, random_state=13) + estimator = ensemble.RandomForestRegressor(n_estimators=2, random_state=13) estimator.fit([[1], [2], [3]], [1, 2, 3]) @@ -61,7 +61,8 @@ def test_two_conditions(): def test_multi_class(): - estimator = RandomForestClassifier(n_estimators=2, random_state=13) + estimator = ensemble.RandomForestClassifier( + n_estimators=2, random_state=13) estimator.fit([[1], [2], [3]], [1, -1, 1]) diff --git a/tests/assemblers/test_linear.py b/tests/assemblers/test_linear.py index 70552e5e..82c3ec99 100644 --- a/tests/assemblers/test_linear.py +++ b/tests/assemblers/test_linear.py @@ -4,8 +4,7 @@ from statsmodels.regression.process_regression import ProcessMLE from lightning.regression import AdaGradRegressor from lightning.classification import AdaGradClassifier -from sklearn.linear_model import \ - LinearRegression, LogisticRegression, RANSACRegressor +from sklearn import linear_model from sklearn.dummy import DummyRegressor from sklearn.tree import DecisionTreeRegressor @@ -14,7 +13,7 @@ def test_single_feature(): - estimator = LinearRegression() + estimator = linear_model.LinearRegression() estimator.coef_ = np.array([1]) estimator.intercept_ = np.array([3]) @@ -33,7 +32,7 @@ def test_single_feature(): def test_two_features(): - estimator = LinearRegression() + estimator = linear_model.LinearRegression() estimator.coef_ = np.array([1, 2]) estimator.intercept_ = np.array([3]) @@ -58,7 +57,7 @@ def test_two_features(): def test_multi_class(): - estimator = LogisticRegression() + estimator = linear_model.LogisticRegression() estimator.coef_ = np.array([[1, 2], [3, 4], [5, 6]]) estimator.intercept_ = np.array([7, 8, 9]) @@ -110,7 +109,7 @@ def test_multi_class(): def test_binary_class(): - estimator = LogisticRegression() + estimator = linear_model.LogisticRegression() estimator.coef_ = np.array([[1, 2]]) estimator.intercept_ = np.array([3]) @@ -136,7 +135,7 @@ def test_binary_class(): def test_ransac_custom_base_estimator(): base_estimator = DecisionTreeRegressor() - estimator = RANSACRegressor( + estimator = linear_model.RANSACRegressor( base_estimator=base_estimator, random_state=1) estimator.fit([[1], [2], [3]], [1, 2, 3]) @@ -158,7 +157,7 @@ def test_ransac_custom_base_estimator(): @pytest.mark.xfail(raises=NotImplementedError, strict=True) def test_ransac_unknown_base_estimator(): base_estimator = DummyRegressor() - estimator = RANSACRegressor( + estimator = linear_model.RANSACRegressor( base_estimator=base_estimator, random_state=1) estimator.fit([[1], [2], [3]], [1, 2, 3]) diff --git a/tests/assemblers/test_svm.py b/tests/assemblers/test_svm.py index 7b0c9046..8e045a78 100644 --- a/tests/assemblers/test_svm.py +++ b/tests/assemblers/test_svm.py @@ -1,13 +1,13 @@ import pytest import numpy as np -from sklearn.svm import SVC +from sklearn import svm from lightning.classification import KernelSVC from m2cgen import assemblers, ast from tests import utils def test_rbf_kernel(): - estimator = SVC(kernel="rbf", random_state=1, gamma=2.0) + estimator = svm.SVC(kernel="rbf", random_state=1, gamma=2.0) estimator.fit([[1], [2]], [1, 2]) @@ -22,7 +22,7 @@ def test_rbf_kernel(): def test_linear_kernel(): - estimator = SVC(kernel="linear", random_state=1) + estimator = svm.SVC(kernel="linear", random_state=1) estimator.fit([[1], [2]], [1, 2]) @@ -43,7 +43,7 @@ def kernel_ast(sup_vec_value): def test_sigmoid_kernel(): - estimator = SVC(kernel="sigmoid", random_state=1, gamma=2.0) + estimator = svm.SVC(kernel="sigmoid", random_state=1, gamma=2.0) estimator.fit([[1], [2]], [1, 2]) @@ -71,7 +71,7 @@ def kernel_ast(sup_vec_value): def test_poly_kernel(): - estimator = SVC(kernel="poly", random_state=1, gamma=2.0, degree=2) + estimator = svm.SVC(kernel="poly", random_state=1, gamma=2.0, degree=2) estimator.fit([[1], [2]], [1, 2]) @@ -137,7 +137,7 @@ def kernel_ast(sup_vec_value): @pytest.mark.xfail(raises=ValueError, strict=True) def test_unknown_kernel(): - estimator = SVC(kernel=lambda x, y: np.transpose(x) * y) + estimator = svm.SVC(kernel=lambda x, y: np.transpose(x) * y) estimator.fit([[1], [2]], [1, 2]) @@ -146,7 +146,7 @@ def test_unknown_kernel(): def test_multi_class_rbf_kernel(): - estimator = SVC(kernel="rbf", random_state=1, gamma=2.0) + estimator = svm.SVC(kernel="rbf", random_state=1, gamma=2.0) estimator.fit([[1], [2], [3]], [1, 2, 3]) diff --git a/tests/assemblers/test_tree.py b/tests/assemblers/test_tree.py index 4d9defd4..360d3daa 100644 --- a/tests/assemblers/test_tree.py +++ b/tests/assemblers/test_tree.py @@ -1,11 +1,11 @@ -from sklearn.tree import DecisionTreeRegressor, DecisionTreeClassifier +from sklearn import tree from m2cgen import assemblers, ast from tests import utils def test_single_condition(): - estimator = DecisionTreeRegressor() + estimator = tree.DecisionTreeRegressor() estimator.fit([[1], [2]], [1, 2]) @@ -24,7 +24,7 @@ def test_single_condition(): def test_two_conditions(): - estimator = DecisionTreeRegressor() + estimator = tree.DecisionTreeRegressor() estimator.fit([[1], [2], [3]], [1, 2, 3]) @@ -49,7 +49,7 @@ def test_two_conditions(): def test_multi_class(): - estimator = DecisionTreeClassifier() + estimator = tree.DecisionTreeClassifier() estimator.fit([[1], [2], [3]], [0, 1, 2]) diff --git a/tests/e2e/test_cli.py b/tests/e2e/test_cli.py index 8b4b4199..aa7b2369 100644 --- a/tests/e2e/test_cli.py +++ b/tests/e2e/test_cli.py @@ -3,7 +3,7 @@ import platform import subprocess -from sklearn.linear_model import LinearRegression +from sklearn import linear_model from tests import utils @@ -22,7 +22,7 @@ def execute_test(exec_args): def _prepare_pickled_model(tmp_path): p = tmp_path / "model.pickle" - estimator = LinearRegression() + estimator = linear_model.LinearRegression() utils.get_regression_model_trainer()(estimator) p.write_bytes(pickle.dumps(estimator)) diff --git a/tests/e2e/test_e2e.py b/tests/e2e/test_e2e.py index 4aa22c4b..f370a01c 100644 --- a/tests/e2e/test_e2e.py +++ b/tests/e2e/test_e2e.py @@ -7,19 +7,9 @@ from statsmodels.regression.process_regression import ProcessMLE import lightning.classification as light_clf import lightning.regression as light_reg -from sklearn.linear_model import \ - ARDRegression, BayesianRidge, ElasticNet, ElasticNetCV, HuberRegressor,\ - Lars, LarsCV, Lasso, LassoCV, LassoLars, LassoLarsCV, LassoLarsIC,\ - LinearRegression, OrthogonalMatchingPursuit, OrthogonalMatchingPursuitCV,\ - PassiveAggressiveRegressor, RANSACRegressor, Ridge, RidgeCV, SGDRegressor,\ - TheilSenRegressor, LogisticRegression, LogisticRegressionCV,\ - PassiveAggressiveClassifier, Perceptron, RidgeClassifier,\ - RidgeClassifierCV, SGDClassifier -from sklearn.svm import LinearSVR, LinearSVC, NuSVR, SVR, NuSVC, SVC -from sklearn.tree import DecisionTreeRegressor, ExtraTreeRegressor,\ - DecisionTreeClassifier, ExtraTreeClassifier -from sklearn.ensemble import ExtraTreesRegressor, RandomForestRegressor,\ - ExtraTreesClassifier, RandomForestClassifier +from sklearn import linear_model, svm +from sklearn import tree +from sklearn import ensemble from tests import utils from tests.e2e import executors @@ -211,9 +201,9 @@ def classification_binary_random(model, test_fraction=0.02): xgboost.XGBClassifier(**XGBOOST_PARAMS_LARGE)), # Sklearn Linear SVM - regression(LinearSVR(random_state=RANDOM_SEED)), - classification(LinearSVC(random_state=RANDOM_SEED)), - classification_binary(LinearSVC(random_state=RANDOM_SEED)), + regression(svm.LinearSVR(random_state=RANDOM_SEED)), + classification(svm.LinearSVC(random_state=RANDOM_SEED)), + classification_binary(svm.LinearSVC(random_state=RANDOM_SEED)), # Lightning Linear SVM regression(light_reg.LinearSVR(random_state=RANDOM_SEED)), @@ -227,19 +217,19 @@ def classification_binary_random(model, test_fraction=0.02): criterion="auc", random_state=RANDOM_SEED)), # Sklearn SVM - regression(NuSVR(kernel="rbf")), - regression(SVR(kernel="rbf")), + regression(svm.NuSVR(kernel="rbf")), + regression(svm.SVR(kernel="rbf")), - classification(NuSVC(kernel="rbf", **SVC_PARAMS)), - classification(SVC(kernel="rbf", **SVC_PARAMS)), + classification(svm.NuSVC(kernel="rbf", **SVC_PARAMS)), + classification(svm.SVC(kernel="rbf", **SVC_PARAMS)), - classification_binary(NuSVC(kernel="rbf", **SVC_PARAMS)), - classification_binary(SVC(kernel="linear", **SVC_PARAMS)), - classification_binary(SVC( + classification_binary(svm.NuSVC(kernel="rbf", **SVC_PARAMS)), + classification_binary(svm.SVC(kernel="linear", **SVC_PARAMS)), + classification_binary(svm.SVC( kernel="poly", C=1.5, degree=2, gamma=0.1, coef0=2.0, **SVC_PARAMS)), - classification_binary(SVC(kernel="rbf", **SVC_PARAMS)), - classification_binary(SVC(kernel="sigmoid", **SVC_PARAMS)), + classification_binary(svm.SVC(kernel="rbf", **SVC_PARAMS)), + classification_binary(svm.SVC(kernel="sigmoid", **SVC_PARAMS)), # Lightning SVM classification(light_clf.KernelSVC( @@ -258,29 +248,30 @@ def classification_binary_random(model, test_fraction=0.02): kernel="cosine", random_state=RANDOM_SEED)), # Sklearn Linear Regression - regression(ARDRegression()), - regression(BayesianRidge()), - regression(ElasticNet(random_state=RANDOM_SEED)), - regression(ElasticNetCV(random_state=RANDOM_SEED)), - regression(HuberRegressor()), - regression(Lars()), - regression(LarsCV()), - regression(Lasso(random_state=RANDOM_SEED)), - regression(LassoCV(random_state=RANDOM_SEED)), - regression(LassoLars()), - regression(LassoLarsCV()), - regression(LassoLarsIC()), - regression(LinearRegression()), - regression(OrthogonalMatchingPursuit()), - regression(OrthogonalMatchingPursuitCV()), - regression(PassiveAggressiveRegressor(random_state=RANDOM_SEED)), - regression(RANSACRegressor( - base_estimator=ExtraTreeRegressor(**TREE_PARAMS), + regression(linear_model.ARDRegression()), + regression(linear_model.BayesianRidge()), + regression(linear_model.ElasticNet(random_state=RANDOM_SEED)), + regression(linear_model.ElasticNetCV(random_state=RANDOM_SEED)), + regression(linear_model.HuberRegressor()), + regression(linear_model.Lars()), + regression(linear_model.LarsCV()), + regression(linear_model.Lasso(random_state=RANDOM_SEED)), + regression(linear_model.LassoCV(random_state=RANDOM_SEED)), + regression(linear_model.LassoLars()), + regression(linear_model.LassoLarsCV()), + regression(linear_model.LassoLarsIC()), + regression(linear_model.LinearRegression()), + regression(linear_model.OrthogonalMatchingPursuit()), + regression(linear_model.OrthogonalMatchingPursuitCV()), + regression(linear_model.PassiveAggressiveRegressor( random_state=RANDOM_SEED)), - regression(Ridge(random_state=RANDOM_SEED)), - regression(RidgeCV()), - regression(SGDRegressor(random_state=RANDOM_SEED)), - regression(TheilSenRegressor(random_state=RANDOM_SEED)), + regression(linear_model.RANSACRegressor( + base_estimator=tree.ExtraTreeRegressor(**TREE_PARAMS), + random_state=RANDOM_SEED)), + regression(linear_model.Ridge(random_state=RANDOM_SEED)), + regression(linear_model.RidgeCV()), + regression(linear_model.SGDRegressor(random_state=RANDOM_SEED)), + regression(linear_model.TheilSenRegressor(random_state=RANDOM_SEED)), # Statsmodels Linear Regression regression(utils.StatsmodelsSklearnLikeWrapper( @@ -346,22 +337,33 @@ def classification_binary_random(model, test_fraction=0.02): regression(light_reg.SDCARegressor(random_state=RANDOM_SEED)), # Sklearn Linear Classifiers - classification(LogisticRegression(random_state=RANDOM_SEED)), - classification(LogisticRegressionCV(random_state=RANDOM_SEED)), - classification(PassiveAggressiveClassifier(random_state=RANDOM_SEED)), - classification(Perceptron(random_state=RANDOM_SEED)), - classification(RidgeClassifier(random_state=RANDOM_SEED)), - classification(RidgeClassifierCV()), - classification(SGDClassifier(random_state=RANDOM_SEED)), - - classification_binary(LogisticRegression(random_state=RANDOM_SEED)), - classification_binary(LogisticRegressionCV(random_state=RANDOM_SEED)), - classification_binary(PassiveAggressiveClassifier( + classification(linear_model.LogisticRegression( + random_state=RANDOM_SEED)), + classification(linear_model.LogisticRegressionCV( + random_state=RANDOM_SEED)), + classification(linear_model.PassiveAggressiveClassifier( + random_state=RANDOM_SEED)), + classification(linear_model.Perceptron( + random_state=RANDOM_SEED)), + classification(linear_model.RidgeClassifier( + random_state=RANDOM_SEED)), + classification(linear_model.RidgeClassifierCV()), + classification(linear_model.SGDClassifier( + random_state=RANDOM_SEED)), + + classification_binary(linear_model.LogisticRegression( + random_state=RANDOM_SEED)), + classification_binary(linear_model.LogisticRegressionCV( + random_state=RANDOM_SEED)), + classification_binary(linear_model.PassiveAggressiveClassifier( + random_state=RANDOM_SEED)), + classification_binary(linear_model.Perceptron( + random_state=RANDOM_SEED)), + classification_binary(linear_model.RidgeClassifier( + random_state=RANDOM_SEED)), + classification_binary(linear_model.RidgeClassifierCV()), + classification_binary(linear_model.SGDClassifier( random_state=RANDOM_SEED)), - classification_binary(Perceptron(random_state=RANDOM_SEED)), - classification_binary(RidgeClassifier(random_state=RANDOM_SEED)), - classification_binary(RidgeClassifierCV()), - classification_binary(SGDClassifier(random_state=RANDOM_SEED)), # Lightning Linear Classifiers classification(light_clf.AdaGradClassifier( @@ -398,25 +400,26 @@ def classification_binary_random(model, test_fraction=0.02): random_state=RANDOM_SEED)), # Decision trees - regression(DecisionTreeRegressor(**TREE_PARAMS)), - regression(ExtraTreeRegressor(**TREE_PARAMS)), + regression(tree.DecisionTreeRegressor(**TREE_PARAMS)), + regression(tree.ExtraTreeRegressor(**TREE_PARAMS)), - classification(DecisionTreeClassifier(**TREE_PARAMS)), - classification(ExtraTreeClassifier(**TREE_PARAMS)), + classification(tree.DecisionTreeClassifier(**TREE_PARAMS)), + classification(tree.ExtraTreeClassifier(**TREE_PARAMS)), - classification_binary(DecisionTreeClassifier(**TREE_PARAMS)), - classification_binary(ExtraTreeClassifier(**TREE_PARAMS)), + classification_binary(tree.DecisionTreeClassifier(**TREE_PARAMS)), + classification_binary(tree.ExtraTreeClassifier(**TREE_PARAMS)), # Random forest - regression(ExtraTreesRegressor(**FOREST_PARAMS)), - regression(RandomForestRegressor(**FOREST_PARAMS)), + regression(ensemble.ExtraTreesRegressor(**FOREST_PARAMS)), + regression(ensemble.RandomForestRegressor(**FOREST_PARAMS)), - classification(ExtraTreesClassifier(**FOREST_PARAMS)), - classification(RandomForestClassifier(**FOREST_PARAMS)), + classification(ensemble.ExtraTreesClassifier(**FOREST_PARAMS)), + classification(ensemble.RandomForestClassifier(**FOREST_PARAMS)), - classification_binary(ExtraTreesClassifier(**FOREST_PARAMS)), - classification_binary(RandomForestClassifier(**FOREST_PARAMS)), + classification_binary(ensemble.ExtraTreesClassifier(**FOREST_PARAMS)), + classification_binary( + ensemble.RandomForestClassifier(**FOREST_PARAMS)), ], # Following is the list of extra tests for languages/models which are diff --git a/tests/test_cli.py b/tests/test_cli.py index 90e43b42..9bb615c9 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -3,7 +3,7 @@ import sys from _pytest import capture -from sklearn.linear_model import LinearRegression +from sklearn import linear_model from unittest import mock from m2cgen import cli @@ -21,7 +21,7 @@ def _get_mock_args(indent=4, function_name=None, namespace=None, def _get_pickled_trained_model(): - estimator = LinearRegression() + estimator = linear_model.LinearRegression() utils.get_regression_model_trainer()(estimator) infile = io.BytesIO() diff --git a/tests/utils.py b/tests/utils.py index 6203b336..d844c5ab 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -13,9 +13,9 @@ from lightning.impl.base import BaseClassifier as LightBaseClassifier from sklearn import datasets from sklearn.base import BaseEstimator, RegressorMixin, clone -from sklearn.ensemble._forest import ForestClassifier +from sklearn.ensemble import forest from sklearn.utils import shuffle -from sklearn.linear_model._base import LinearClassifierMixin +from sklearn.linear_model.base import LinearClassifierMixin from sklearn.tree import DecisionTreeClassifier from sklearn.svm import SVC, NuSVC from xgboost import XGBClassifier @@ -120,7 +120,7 @@ def __call__(self, estimator): y_pred = estimator.predict_proba(self.X_test.astype(np.float32)) elif isinstance( estimator, - (ForestClassifier, XGBClassifier, LGBMClassifier)): + (forest.ForestClassifier, XGBClassifier, LGBMClassifier)): y_pred = estimator.predict_proba(self.X_test) else: y_pred = estimator.predict(self.X_test) diff --git a/tools/generate_code_examples.py b/tools/generate_code_examples.py index 11bcbd84..c08f49a2 100644 --- a/tools/generate_code_examples.py +++ b/tools/generate_code_examples.py @@ -14,10 +14,7 @@ import lightgbm import xgboost -from sklearn.linear_model import LinearRegression, LogisticRegression -from sklearn.tree import DecisionTreeRegressor, DecisionTreeClassifier -from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier -from sklearn.svm import NuSVR, NuSVC +from sklearn import linear_model, tree, ensemble, svm import m2cgen as m2c from tests import utils @@ -52,32 +49,32 @@ EXAMPLE_MODELS = [ ( "regression", "linear", - LinearRegression(), + linear_model.LinearRegression(), utils.get_regression_model_trainer(), ), ( "classification", "linear", - LogisticRegression(random_state=RANDOM_SEED), + linear_model.LogisticRegression(random_state=RANDOM_SEED), utils.get_classification_model_trainer(), ), ( "regression", "decision_tree", - DecisionTreeRegressor(**TREE_PARAMS), + tree.DecisionTreeRegressor(**TREE_PARAMS), utils.get_regression_model_trainer(), ), ( "classification", "decision_tree", - DecisionTreeClassifier(**TREE_PARAMS), + tree.DecisionTreeClassifier(**TREE_PARAMS), utils.get_classification_model_trainer(), ), ( "regression", "random_forest", - RandomForestRegressor(**FOREST_PARAMS), + ensemble.RandomForestRegressor(**FOREST_PARAMS), utils.get_regression_model_trainer(), ), ( "classification", "random_forest", - RandomForestClassifier(**FOREST_PARAMS), + ensemble.RandomForestClassifier(**FOREST_PARAMS), utils.get_classification_model_trainer(), ), ( @@ -102,12 +99,12 @@ ), ( "regression", "svm", - NuSVR(nu=0.1), + svm.NuSVR(nu=0.1), utils.get_regression_model_trainer(), ), ( "classification", "svm", - NuSVC(**SVC_PARAMS), + svm.NuSVC(**SVC_PARAMS), utils.get_classification_model_trainer(), ), ] From f085588b874f4fd3ac9d50c1475b6ccaaf6f903f Mon Sep 17 00:00:00 2001 From: StrikerRUS Date: Tue, 5 May 2020 19:56:37 +0300 Subject: [PATCH 3/3] fix future warning --- tests/utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/utils.py b/tests/utils.py index d844c5ab..6203b336 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -13,9 +13,9 @@ from lightning.impl.base import BaseClassifier as LightBaseClassifier from sklearn import datasets from sklearn.base import BaseEstimator, RegressorMixin, clone -from sklearn.ensemble import forest +from sklearn.ensemble._forest import ForestClassifier from sklearn.utils import shuffle -from sklearn.linear_model.base import LinearClassifierMixin +from sklearn.linear_model._base import LinearClassifierMixin from sklearn.tree import DecisionTreeClassifier from sklearn.svm import SVC, NuSVC from xgboost import XGBClassifier @@ -120,7 +120,7 @@ def __call__(self, estimator): y_pred = estimator.predict_proba(self.X_test.astype(np.float32)) elif isinstance( estimator, - (forest.ForestClassifier, XGBClassifier, LGBMClassifier)): + (ForestClassifier, XGBClassifier, LGBMClassifier)): y_pred = estimator.predict_proba(self.X_test) else: y_pred = estimator.predict(self.X_test)