Skip to content

Commit

Permalink
API Change ColumnTransformer parameter name to verbose_feature_names_…
Browse files Browse the repository at this point in the history
…out (#21080)
  • Loading branch information
thomasjpfan authored and adrinjalali committed Sep 23, 2021
1 parent b6b6268 commit 195022f
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 29 deletions.
8 changes: 4 additions & 4 deletions doc/modules/compose.rst
Original file line number Diff line number Diff line change
Expand Up @@ -449,13 +449,13 @@ By default, the remaining rating columns are ignored (``remainder='drop'``)::
>>> column_trans = ColumnTransformer(
... [('categories', OneHotEncoder(dtype='int'), ['city']),
... ('title_bow', CountVectorizer(), 'title')],
... remainder='drop', prefix_feature_names_out=False)
... remainder='drop', verbose_feature_names_out=False)

>>> column_trans.fit(X)
ColumnTransformer(prefix_feature_names_out=False,
transformers=[('categories', OneHotEncoder(dtype='int'),
ColumnTransformer(transformers=[('categories', OneHotEncoder(dtype='int'),
['city']),
('title_bow', CountVectorizer(), 'title')])
('title_bow', CountVectorizer(), 'title')],
verbose_feature_names_out=False)

>>> column_trans.get_feature_names_out()
array(['city_London', 'city_Paris', 'city_Sallisaw', 'bow', 'feast',
Expand Down
4 changes: 2 additions & 2 deletions doc/whats_new/v1.0.rst
Original file line number Diff line number Diff line change
Expand Up @@ -251,9 +251,9 @@ Changelog
an adequate transformer.
:pr:`18898` by :user:`Oras Phongpanagnam <panangam>`.

- |API| Adds `prefix_feature_names_out` to :class:`compose.ColumnTransformer`.
- |API| Adds `verbose_feature_names_out` to :class:`compose.ColumnTransformer`.
This flag controls the prefixing of feature names out in
:term:`get_feature_names_out`. :pr:`18444` by `Thomas Fan`_.
:term:`get_feature_names_out`. :pr:`18444` and :pr:`21080` by `Thomas Fan`_.

:mod:`sklearn.covariance`
.........................
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@
preprocessor = make_column_transformer(
(OneHotEncoder(drop="if_binary"), categorical_columns),
remainder="passthrough",
prefix_feature_names_out=False,
verbose_feature_names_out=False,
)

# %%
Expand Down
18 changes: 9 additions & 9 deletions sklearn/compose/_column_transformer.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ class ColumnTransformer(TransformerMixin, _BaseComposition):
If True, the time elapsed while fitting each transformer will be
printed as it is completed.
prefix_feature_names_out : bool, default=True
verbose_feature_names_out : bool, default=True
If True, :meth:`get_feature_names_out` will prefix all feature names
with the name of the transformer that generated that feature.
If False, :meth:`get_feature_names_out` will not prefix any feature
Expand Down Expand Up @@ -204,15 +204,15 @@ def __init__(
n_jobs=None,
transformer_weights=None,
verbose=False,
prefix_feature_names_out=True,
verbose_feature_names_out=True,
):
self.transformers = transformers
self.remainder = remainder
self.sparse_threshold = sparse_threshold
self.n_jobs = n_jobs
self.transformer_weights = transformer_weights
self.verbose = verbose
self.prefix_feature_names_out = prefix_feature_names_out
self.verbose_feature_names_out = verbose_feature_names_out

@property
def _transformers(self):
Expand Down Expand Up @@ -489,7 +489,7 @@ def get_feature_names_out(self, input_features=None):
# No feature names
return np.array([], dtype=object)

if self.prefix_feature_names_out:
if self.verbose_feature_names_out:
# Prefix the feature names out with the transformers name
names = list(
chain.from_iterable(
Expand All @@ -499,7 +499,7 @@ def get_feature_names_out(self, input_features=None):
)
return np.asarray(names, dtype=object)

# prefix_feature_names_out is False
# verbose_feature_names_out is False
# Check that names are all unique without a prefix
feature_names_count = Counter(
chain.from_iterable(s for _, s in transformer_with_feature_names_out)
Expand All @@ -517,7 +517,7 @@ def get_feature_names_out(self, input_features=None):
names_repr = str(top_6_overlap)
raise ValueError(
f"Output feature names: {names_repr} are not unique. Please set "
"prefix_feature_names_out=True to add prefixes to feature names"
"verbose_feature_names_out=True to add prefixes to feature names"
)

return np.concatenate(
Expand Down Expand Up @@ -856,7 +856,7 @@ def make_column_transformer(
sparse_threshold=0.3,
n_jobs=None,
verbose=False,
prefix_feature_names_out=True,
verbose_feature_names_out=True,
):
"""Construct a ColumnTransformer from the given transformers.
Expand Down Expand Up @@ -919,7 +919,7 @@ def make_column_transformer(
If True, the time elapsed while fitting each transformer will be
printed as it is completed.
prefix_feature_names_out : bool, default=True
verbose_feature_names_out : bool, default=True
If True, :meth:`get_feature_names_out` will prefix all feature names
with the name of the transformer that generated that feature.
If False, :meth:`get_feature_names_out` will not prefix any feature
Expand Down Expand Up @@ -959,7 +959,7 @@ def make_column_transformer(
remainder=remainder,
sparse_threshold=sparse_threshold,
verbose=verbose,
prefix_feature_names_out=prefix_feature_names_out,
verbose_feature_names_out=verbose_feature_names_out,
)


Expand Down
26 changes: 13 additions & 13 deletions sklearn/compose/tests/test_column_transformer.py
Original file line number Diff line number Diff line change
Expand Up @@ -709,7 +709,7 @@ def test_column_transformer_get_set_params():
"trans2__with_std": True,
"transformers": ct.transformers,
"transformer_weights": None,
"prefix_feature_names_out": True,
"verbose_feature_names_out": True,
"verbose": False,
}

Expand All @@ -730,7 +730,7 @@ def test_column_transformer_get_set_params():
"trans2__with_std": True,
"transformers": ct.transformers,
"transformer_weights": None,
"prefix_feature_names_out": True,
"verbose_feature_names_out": True,
"verbose": False,
}

Expand Down Expand Up @@ -1149,7 +1149,7 @@ def test_column_transformer_get_set_params_with_remainder():
"trans1__with_std": True,
"transformers": ct.transformers,
"transformer_weights": None,
"prefix_feature_names_out": True,
"verbose_feature_names_out": True,
"verbose": False,
}

Expand All @@ -1169,7 +1169,7 @@ def test_column_transformer_get_set_params_with_remainder():
"trans1": "passthrough",
"transformers": ct.transformers,
"transformer_weights": None,
"prefix_feature_names_out": True,
"verbose_feature_names_out": True,
"verbose": False,
}
assert ct.get_params() == exp
Expand Down Expand Up @@ -1760,8 +1760,8 @@ def get_feature_names_out(self, input_features=None):
),
],
)
def test_feature_names_out_prefix_true(transformers, remainder, expected_names):
"""Check feature_names_out for prefix_feature_names_out==True (default)"""
def test_verbose_feature_names_out_true(transformers, remainder, expected_names):
"""Check feature_names_out for verbose_feature_names_out=True (default)"""
pd = pytest.importorskip("pandas")
df = pd.DataFrame([[1, 2, 3, 4]], columns=["a", "b", "c", "d"])
ct = ColumnTransformer(
Expand Down Expand Up @@ -1835,14 +1835,14 @@ def test_feature_names_out_prefix_true(transformers, remainder, expected_names):
),
],
)
def test_feature_names_out_prefix_false(transformers, remainder, expected_names):
"""Check feature_names_out for prefix_feature_names_out==True (default)"""
def test_verbose_feature_names_out_false(transformers, remainder, expected_names):
"""Check feature_names_out for verbose_feature_names_out=False"""
pd = pytest.importorskip("pandas")
df = pd.DataFrame([[1, 2, 3, 4]], columns=["a", "b", "c", "d"])
ct = ColumnTransformer(
transformers,
remainder=remainder,
prefix_feature_names_out=False,
verbose_feature_names_out=False,
)
ct.fit(df)

Expand Down Expand Up @@ -1923,23 +1923,23 @@ def test_feature_names_out_prefix_false(transformers, remainder, expected_names)
),
],
)
def test_feature_names_out_prefix_false_errors(
def test_verbose_feature_names_out_false_errors(
transformers, remainder, colliding_columns
):
"""Check feature_names_out for prefix_feature_names_out==False"""
"""Check feature_names_out for verbose_feature_names_out=False"""

pd = pytest.importorskip("pandas")
df = pd.DataFrame([[1, 2, 3, 4]], columns=["a", "b", "c", "d"])
ct = ColumnTransformer(
transformers,
remainder=remainder,
prefix_feature_names_out=False,
verbose_feature_names_out=False,
)
ct.fit(df)

msg = re.escape(
f"Output feature names: {colliding_columns} are not unique. Please set "
"prefix_feature_names_out=True to add prefixes to feature names"
"verbose_feature_names_out=True to add prefixes to feature names"
)
with pytest.raises(ValueError, match=msg):
ct.get_feature_names_out()

0 comments on commit 195022f

Please sign in to comment.