From 72830e6feef0328215b63315c9731e8496f5057f Mon Sep 17 00:00:00 2001 From: Soledad Galli Date: Tue, 10 Jan 2023 10:07:01 -0300 Subject: [PATCH 1/3] add test for set_output --- .../test_set_output.py | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 tests/test_sklearn_compatible/test_set_output.py diff --git a/tests/test_sklearn_compatible/test_set_output.py b/tests/test_sklearn_compatible/test_set_output.py new file mode 100644 index 000000000..0f08514b3 --- /dev/null +++ b/tests/test_sklearn_compatible/test_set_output.py @@ -0,0 +1,44 @@ +import numpy as np +import pandas as pd +from sklearn.datasets import load_iris +from sklearn.pipeline import Pipeline, make_pipeline +from sklearn.preprocessing import StandardScaler +from sklearn.linear_model import LogisticRegression + +from feature_engine.transformation import YeoJohnsonTransformer + + +def test_pipeline_with_set_output_sklearn_last(): + + X, y = load_iris(return_X_y=True, as_frame=True) + + pipeline = make_pipeline( + YeoJohnsonTransformer(), StandardScaler(), LogisticRegression() + ).set_output(transform="default") + pipeline.fit(X, y) + + X_t = pipeline[:-1].fit_transform(X, y) + assert isinstance(X_t, np.ndarray) + + pipeline.set_output(transform="pandas") + X_t = pipeline[:-1].fit_transform(X, y) + + assert isinstance(X_t, pd.DataFrame) + + +def test_pipeline_with_set_output_featureengine_last(): + + X, y = load_iris(return_X_y=True, as_frame=True) + + pipeline = make_pipeline( + StandardScaler(), YeoJohnsonTransformer(), LogisticRegression() + ).set_output(transform="default") + pipeline.fit(X, y) + + X_t = pipeline[:-1].fit_transform(X, y) + assert isinstance(X_t, pd.DataFrame) + + pipeline.set_output(transform="pandas") + X_t = pipeline[:-1].fit_transform(X, y) + + assert isinstance(X_t, pd.DataFrame) From 7f94d2c0d31762d737d65a5c30ac8dcc6b856d0c Mon Sep 17 00:00:00 2001 From: Soledad Galli Date: Tue, 10 Jan 2023 10:09:50 -0300 Subject: [PATCH 2/3] fix codestyle --- tests/test_sklearn_compatible/test_set_output.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_sklearn_compatible/test_set_output.py b/tests/test_sklearn_compatible/test_set_output.py index 0f08514b3..0d39bd64b 100644 --- a/tests/test_sklearn_compatible/test_set_output.py +++ b/tests/test_sklearn_compatible/test_set_output.py @@ -1,9 +1,9 @@ import numpy as np import pandas as pd from sklearn.datasets import load_iris -from sklearn.pipeline import Pipeline, make_pipeline -from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression +from sklearn.pipeline import make_pipeline +from sklearn.preprocessing import StandardScaler from feature_engine.transformation import YeoJohnsonTransformer From 6a5dc9a06862e6fa4522b98d0205d5e593dedad8 Mon Sep 17 00:00:00 2001 From: Soledad Galli Date: Tue, 10 Jan 2023 10:27:37 -0300 Subject: [PATCH 3/3] add individual test for set_output --- .../test_set_output.py | 30 ++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/tests/test_sklearn_compatible/test_set_output.py b/tests/test_sklearn_compatible/test_set_output.py index 0d39bd64b..807dea387 100644 --- a/tests/test_sklearn_compatible/test_set_output.py +++ b/tests/test_sklearn_compatible/test_set_output.py @@ -15,13 +15,14 @@ def test_pipeline_with_set_output_sklearn_last(): pipeline = make_pipeline( YeoJohnsonTransformer(), StandardScaler(), LogisticRegression() ).set_output(transform="default") + pipeline.fit(X, y) - X_t = pipeline[:-1].fit_transform(X, y) + X_t = pipeline[:-1].transform(X) assert isinstance(X_t, np.ndarray) pipeline.set_output(transform="pandas") - X_t = pipeline[:-1].fit_transform(X, y) + X_t = pipeline[:-1].transform(X) assert isinstance(X_t, pd.DataFrame) @@ -33,12 +34,33 @@ def test_pipeline_with_set_output_featureengine_last(): pipeline = make_pipeline( StandardScaler(), YeoJohnsonTransformer(), LogisticRegression() ).set_output(transform="default") + pipeline.fit(X, y) - X_t = pipeline[:-1].fit_transform(X, y) + X_t = pipeline[:-1].transform(X) + pipeline.fit(X, y) assert isinstance(X_t, pd.DataFrame) pipeline.set_output(transform="pandas") - X_t = pipeline[:-1].fit_transform(X, y) + pipeline.fit(X, y) + + X_t = pipeline[:-1].transform(X) + + assert isinstance(X_t, pd.DataFrame) + + +def test_individual_transformer(): + + X, y = load_iris(return_X_y=True, as_frame=True) + + transformer = YeoJohnsonTransformer() + transformer.set_output(transform="default") + transformer.fit(X) + + X_t = transformer.transform(X) + assert isinstance(X_t, pd.DataFrame) + + transformer.set_output(transform="pandas") + X_t = transformer.transform(X) assert isinstance(X_t, pd.DataFrame)