From 2094ce9475fb22fe7c342f79454cd070da5ba9a8 Mon Sep 17 00:00:00 2001 From: Soledad Galli Date: Sat, 28 Jan 2023 21:19:34 -0300 Subject: [PATCH 1/3] take docstrings outside base class --- .../init_parameters/discretisers.py | 14 +++++++++++ feature_engine/_docstrings/methods.py | 9 ++++++++ feature_engine/discretisation/arbitrary.py | 14 +++++++---- .../discretisation/base_discretiser.py | 23 ------------------- .../discretisation/equal_frequency.py | 21 ++++++++++++----- feature_engine/discretisation/equal_width.py | 21 ++++++++++++----- 6 files changed, 63 insertions(+), 39 deletions(-) create mode 100644 feature_engine/_docstrings/init_parameters/discretisers.py diff --git a/feature_engine/_docstrings/init_parameters/discretisers.py b/feature_engine/_docstrings/init_parameters/discretisers.py new file mode 100644 index 000000000..d69413401 --- /dev/null +++ b/feature_engine/_docstrings/init_parameters/discretisers.py @@ -0,0 +1,14 @@ +_return_object_docstring = """return_object: bool, default=False + Whether the the discrete variable should be returned as numeric or as + object. If you would like to proceed with the engineering of the variable as if + it was categorical, use True. Alternatively, keep the default to False. + """.rstrip() + +_return_boundaries_docstring = """return_boundaries: bool, default=False + Whether the output should be the interval boundaries. If True, it returns + the interval boundaries. If False, it returns integers. + """.rstrip() + +_binner_dict_docstring = """binner_dict_: + Dictionary with the interval limits per variable. + """.rstrip() \ No newline at end of file diff --git a/feature_engine/_docstrings/methods.py b/feature_engine/_docstrings/methods.py index 6cd097790..b548877c4 100644 --- a/feature_engine/_docstrings/methods.py +++ b/feature_engine/_docstrings/methods.py @@ -31,3 +31,12 @@ _transform_creation_docstring = """transform: Create new features. """.rstrip() + +# used in discretisers module +_fit_discretiser_docstring = """fit: + Find the interval limits. + """.rstrip() + +_transform_discretiser_docstring = """transform: + Sort continuous variable values into the intervals. + """.rstrip() \ No newline at end of file diff --git a/feature_engine/discretisation/arbitrary.py b/feature_engine/discretisation/arbitrary.py index e83dc0eb2..a37323d9e 100644 --- a/feature_engine/discretisation/arbitrary.py +++ b/feature_engine/discretisation/arbitrary.py @@ -12,9 +12,15 @@ _n_features_in_docstring, _variables_attribute_docstring, ) +from feature_engine._docstrings.init_parameters.discretisers import ( + _binner_dict_docstring, + _return_object_docstring, + _return_boundaries_docstring, +) from feature_engine._docstrings.methods import ( _fit_not_learn_docstring, _fit_transform_docstring, + _transform_discretiser_docstring, ) from feature_engine._docstrings.substitute import Substitution from feature_engine.discretisation.base_discretiser import BaseDiscretiser @@ -22,10 +28,10 @@ @Substitution( - return_object=BaseDiscretiser._return_object_docstring, - return_boundaries=BaseDiscretiser._return_boundaries_docstring, - binner_dict_=BaseDiscretiser._binner_dict_docstring, - transform=BaseDiscretiser._transform_docstring, + return_object=_return_object_docstring, + return_boundaries=_return_boundaries_docstring, + binner_dict_=_binner_dict_docstring, + transform=_transform_discretiser_docstring, variables_=_variables_attribute_docstring, feature_names_in_=_feature_names_in_docstring, n_features_in_=_n_features_in_docstring, diff --git a/feature_engine/discretisation/base_discretiser.py b/feature_engine/discretisation/base_discretiser.py index d15bddef5..132025243 100644 --- a/feature_engine/discretisation/base_discretiser.py +++ b/feature_engine/discretisation/base_discretiser.py @@ -13,29 +13,6 @@ class BaseDiscretiser(BaseNumericalTransformer): Important: inherits fit() functionality and tags from BaseNumericalTransformer. """ - _return_object_docstring = """return_object: bool, default=False - Whether the the discrete variable should be returned as numeric or as - object. If you would like to proceed with the engineering of the variable as if - it was categorical, use True. Alternatively, keep the default to False. - """.rstrip() - - _return_boundaries_docstring = """return_boundaries: bool, default=False - Whether the output should be the interval boundaries. If True, it returns - the interval boundaries. If False, it returns integers. - """.rstrip() - - _binner_dict_docstring = """binner_dict_: - Dictionary with the interval limits per variable. - """.rstrip() - - _fit_docstring = """fit: - Find the interval limits. - """.rstrip() - - _transform_docstring = """transform: - Sort continuous variable values into the intervals. - """ - def __init__( self, return_object: bool = False, diff --git a/feature_engine/discretisation/equal_frequency.py b/feature_engine/discretisation/equal_frequency.py index 393e31072..39389e102 100644 --- a/feature_engine/discretisation/equal_frequency.py +++ b/feature_engine/discretisation/equal_frequency.py @@ -13,7 +13,16 @@ from feature_engine._docstrings.init_parameters.all_trasnformers import ( _variables_numerical_docstring, ) -from feature_engine._docstrings.methods import _fit_transform_docstring +from feature_engine._docstrings.init_parameters.discretisers import ( + _binner_dict_docstring, + _return_object_docstring, + _return_boundaries_docstring, +) +from feature_engine._docstrings.methods import ( + _fit_transform_docstring, + _fit_discretiser_docstring, + _transform_discretiser_docstring, +) from feature_engine._docstrings.substitute import Substitution from feature_engine._variable_handling.init_parameter_checks import ( _check_init_parameter_variables, @@ -22,11 +31,11 @@ @Substitution( - return_object=BaseDiscretiser._return_object_docstring, - return_boundaries=BaseDiscretiser._return_boundaries_docstring, - binner_dict_=BaseDiscretiser._binner_dict_docstring, - fit=BaseDiscretiser._fit_docstring, - transform=BaseDiscretiser._transform_docstring, + return_object=_return_object_docstring, + return_boundaries=_return_boundaries_docstring, + binner_dict_=_binner_dict_docstring, + fit=_fit_discretiser_docstring, + transform=_transform_discretiser_docstring, variables=_variables_numerical_docstring, variables_=_variables_attribute_docstring, feature_names_in_=_feature_names_in_docstring, diff --git a/feature_engine/discretisation/equal_width.py b/feature_engine/discretisation/equal_width.py index ac03233f1..cbb6d56b0 100644 --- a/feature_engine/discretisation/equal_width.py +++ b/feature_engine/discretisation/equal_width.py @@ -13,7 +13,16 @@ from feature_engine._docstrings.init_parameters.all_trasnformers import ( _variables_numerical_docstring, ) -from feature_engine._docstrings.methods import _fit_transform_docstring +from feature_engine._docstrings.init_parameters.discretisers import ( + _binner_dict_docstring, + _return_object_docstring, + _return_boundaries_docstring, +) +from feature_engine._docstrings.methods import ( + _fit_transform_docstring, + _fit_discretiser_docstring, + _transform_discretiser_docstring, +) from feature_engine._docstrings.substitute import Substitution from feature_engine._variable_handling.init_parameter_checks import ( _check_init_parameter_variables, @@ -22,11 +31,11 @@ @Substitution( - return_object=BaseDiscretiser._return_object_docstring, - return_boundaries=BaseDiscretiser._return_boundaries_docstring, - binner_dict_=BaseDiscretiser._binner_dict_docstring, - fit=BaseDiscretiser._fit_docstring, - transform=BaseDiscretiser._transform_docstring, + return_object=_return_object_docstring, + return_boundaries=_return_boundaries_docstring, + binner_dict_=_binner_dict_docstring, + fit=_fit_discretiser_docstring, + transform=_transform_discretiser_docstring, variables=_variables_numerical_docstring, variables_=_variables_attribute_docstring, feature_names_in_=_feature_names_in_docstring, From 7f0dcd3813ab3115f4a77eea42e71a5c530ce96c Mon Sep 17 00:00:00 2001 From: Soledad Galli Date: Sat, 28 Jan 2023 21:23:16 -0300 Subject: [PATCH 2/3] rewords docstring move attribute docstrings --- feature_engine/_docstrings/fit_attributes.py | 3 +++ .../_docstrings/init_parameters/discretisers.py | 10 +++------- feature_engine/discretisation/arbitrary.py | 3 +-- feature_engine/discretisation/equal_frequency.py | 3 +-- feature_engine/discretisation/equal_width.py | 3 +-- 5 files changed, 9 insertions(+), 13 deletions(-) diff --git a/feature_engine/_docstrings/fit_attributes.py b/feature_engine/_docstrings/fit_attributes.py index 1e0b8de1b..173510421 100644 --- a/feature_engine/_docstrings/fit_attributes.py +++ b/feature_engine/_docstrings/fit_attributes.py @@ -11,3 +11,6 @@ _n_features_in_docstring = """n_features_in_: The number of features in the train set used in fit. """.rstrip() +_binner_dict_docstring = """binner_dict_: + Dictionary with the interval limits per variable. + """.rstrip() diff --git a/feature_engine/_docstrings/init_parameters/discretisers.py b/feature_engine/_docstrings/init_parameters/discretisers.py index d69413401..59adae612 100644 --- a/feature_engine/_docstrings/init_parameters/discretisers.py +++ b/feature_engine/_docstrings/init_parameters/discretisers.py @@ -1,14 +1,10 @@ _return_object_docstring = """return_object: bool, default=False - Whether the the discrete variable should be returned as numeric or as - object. If you would like to proceed with the engineering of the variable as if - it was categorical, use True. Alternatively, keep the default to False. + Whether the the discrete variable should be returned as type numeric or type + object. If you would like to encode the discrete variables with Feature-engine's + categorical encoders, use True. Alternatively, keep the default to False. """.rstrip() _return_boundaries_docstring = """return_boundaries: bool, default=False Whether the output should be the interval boundaries. If True, it returns the interval boundaries. If False, it returns integers. """.rstrip() - -_binner_dict_docstring = """binner_dict_: - Dictionary with the interval limits per variable. - """.rstrip() \ No newline at end of file diff --git a/feature_engine/discretisation/arbitrary.py b/feature_engine/discretisation/arbitrary.py index a37323d9e..7c7f57859 100644 --- a/feature_engine/discretisation/arbitrary.py +++ b/feature_engine/discretisation/arbitrary.py @@ -10,10 +10,9 @@ from feature_engine._docstrings.fit_attributes import ( _feature_names_in_docstring, _n_features_in_docstring, - _variables_attribute_docstring, + _variables_attribute_docstring, _binner_dict_docstring, ) from feature_engine._docstrings.init_parameters.discretisers import ( - _binner_dict_docstring, _return_object_docstring, _return_boundaries_docstring, ) diff --git a/feature_engine/discretisation/equal_frequency.py b/feature_engine/discretisation/equal_frequency.py index 39389e102..9d3406e3c 100644 --- a/feature_engine/discretisation/equal_frequency.py +++ b/feature_engine/discretisation/equal_frequency.py @@ -8,13 +8,12 @@ from feature_engine._docstrings.fit_attributes import ( _feature_names_in_docstring, _n_features_in_docstring, - _variables_attribute_docstring, + _variables_attribute_docstring, _binner_dict_docstring, ) from feature_engine._docstrings.init_parameters.all_trasnformers import ( _variables_numerical_docstring, ) from feature_engine._docstrings.init_parameters.discretisers import ( - _binner_dict_docstring, _return_object_docstring, _return_boundaries_docstring, ) diff --git a/feature_engine/discretisation/equal_width.py b/feature_engine/discretisation/equal_width.py index cbb6d56b0..c7728e05a 100644 --- a/feature_engine/discretisation/equal_width.py +++ b/feature_engine/discretisation/equal_width.py @@ -8,13 +8,12 @@ from feature_engine._docstrings.fit_attributes import ( _feature_names_in_docstring, _n_features_in_docstring, - _variables_attribute_docstring, + _variables_attribute_docstring, _binner_dict_docstring, ) from feature_engine._docstrings.init_parameters.all_trasnformers import ( _variables_numerical_docstring, ) from feature_engine._docstrings.init_parameters.discretisers import ( - _binner_dict_docstring, _return_object_docstring, _return_boundaries_docstring, ) From f8ab8d0297f8286a14bb29fa5a6d7e3f300d191c Mon Sep 17 00:00:00 2001 From: Soledad Galli Date: Sat, 28 Jan 2023 21:25:39 -0300 Subject: [PATCH 3/3] add space and fix style --- feature_engine/_docstrings/fit_attributes.py | 1 + feature_engine/_docstrings/methods.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/feature_engine/_docstrings/fit_attributes.py b/feature_engine/_docstrings/fit_attributes.py index 173510421..a1edaa495 100644 --- a/feature_engine/_docstrings/fit_attributes.py +++ b/feature_engine/_docstrings/fit_attributes.py @@ -11,6 +11,7 @@ _n_features_in_docstring = """n_features_in_: The number of features in the train set used in fit. """.rstrip() + _binner_dict_docstring = """binner_dict_: Dictionary with the interval limits per variable. """.rstrip() diff --git a/feature_engine/_docstrings/methods.py b/feature_engine/_docstrings/methods.py index b548877c4..b734d5613 100644 --- a/feature_engine/_docstrings/methods.py +++ b/feature_engine/_docstrings/methods.py @@ -39,4 +39,4 @@ _transform_discretiser_docstring = """transform: Sort continuous variable values into the intervals. - """.rstrip() \ No newline at end of file + """.rstrip()