Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit ff33ffb

Browse files
crflynnglemaitreogrisel
authored
API add named_transformers attribute to FeatureUnion (#20331)
Co-authored-by: Guillaume Lemaitre <[email protected]> Co-authored-by: Olivier Grisel <[email protected]>
1 parent a71c535 commit ff33ffb

File tree

3 files changed

+30
-0
lines changed

3 files changed

+30
-0
lines changed

doc/whats_new/v1.2.rst

+4
Original file line numberDiff line numberDiff line change
@@ -521,6 +521,10 @@ Changelog
521521
be used when one of the transformers in the :class:`pipeline.FeatureUnion` is
522522
`"passthrough"`. :pr:`24058` by :user:`Diederik Perdok <diederikwp>`
523523

524+
- |Enhancement| The :class:`FeatureUnion` class now has a `named_transformers`
525+
attribute for accessing transformers by name.
526+
:pr:`20331` by :user:`Christopher Flynn <crflynn>`.
527+
524528
:mod:`sklearn.preprocessing`
525529
............................
526530

sklearn/pipeline.py

+13
Original file line numberDiff line numberDiff line change
@@ -959,6 +959,14 @@ class FeatureUnion(TransformerMixin, _BaseComposition):
959959
960960
Attributes
961961
----------
962+
named_transformers : :class:`~sklearn.utils.Bunch`
963+
Dictionary-like object, with the following attributes.
964+
Read-only attribute to access any transformer parameter by user
965+
given name. Keys are transformer names and values are
966+
transformer parameters.
967+
968+
.. versionadded:: 1.2
969+
962970
n_features_in_ : int
963971
Number of features seen during :term:`fit`. Only defined if the
964972
underlying first transformer in `transformer_list` exposes such an
@@ -1017,6 +1025,11 @@ def set_output(self, transform=None):
10171025
_safe_set_output(step, transform=transform)
10181026
return self
10191027

1028+
@property
1029+
def named_transformers(self):
1030+
# Use Bunch object to improve autocomplete
1031+
return Bunch(**dict(self.transformer_list))
1032+
10201033
def get_params(self, deep=True):
10211034
"""Get parameters for this estimator.
10221035

sklearn/tests/test_pipeline.py

+13
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,19 @@ def test_feature_union():
524524
fs.fit(X, y)
525525

526526

527+
def test_feature_union_named_transformers():
528+
"""Check the behaviour of `named_transformers` attribute."""
529+
transf = Transf()
530+
noinvtransf = NoInvTransf()
531+
fs = FeatureUnion([("transf", transf), ("noinvtransf", noinvtransf)])
532+
assert fs.named_transformers["transf"] == transf
533+
assert fs.named_transformers["noinvtransf"] == noinvtransf
534+
535+
# test named attribute
536+
assert fs.named_transformers.transf == transf
537+
assert fs.named_transformers.noinvtransf == noinvtransf
538+
539+
527540
def test_make_union():
528541
pca = PCA(svd_solver="full")
529542
mock = Transf()

0 commit comments

Comments
 (0)