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

Skip to content

Commit 6997c8f

Browse files
committed
ENH: Adapts ColumnTransformer to pipeline funcs
1 parent b92da44 commit 6997c8f

1 file changed

Lines changed: 22 additions & 5 deletions

File tree

sklearn/compose/_column_transformer.py

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
# Joris Van den Bossche
88
# License: BSD
99
from itertools import chain
10+
from functools import partial
1011

1112
import numpy as np
1213
from scipy import sparse
@@ -15,7 +16,7 @@
1516
from ..externals.joblib import Parallel, delayed
1617
from ..externals import six
1718
from ..pipeline import (
18-
_fit_one_transformer, _fit_transform_one, _transform_one, _name_estimators)
19+
_fit_transform_one, _transform_one, _name_estimators)
1920
from ..preprocessing import FunctionTransformer
2021
from ..utils import Bunch
2122
from ..utils.metaestimators import _BaseComposition
@@ -344,8 +345,9 @@ def _fit_transform(self, X, y, func, fitted=False):
344345
"""
345346
try:
346347
return Parallel(n_jobs=self.n_jobs)(
347-
delayed(func)(clone(trans) if not fitted else trans,
348-
X_sel, y, weight)
348+
delayed(func)(
349+
transformer=clone(trans) if not fitted else trans,
350+
X=X_sel, y=y, weight=weight)
349351
for _, trans, X_sel, weight in self._iter(
350352
X=X, fitted=fitted, replace_strings=True))
351353
except ValueError as e:
@@ -375,7 +377,16 @@ def fit(self, X, y=None):
375377
self._validate_remainder(X)
376378
self._validate_transformers()
377379

378-
transformers = self._fit_transform(X, y, _fit_one_transformer)
380+
fit_one_transformer = partial(
381+
_fit_transform_one,
382+
is_transform=False,
383+
clsname="ColumnTransformer",
384+
message=None
385+
)
386+
387+
# fit_one_transformer returns (None, transformer) tuples
388+
transformer_tuples = self._fit_transform(X, y, fit_one_transformer)
389+
transformers = [t[1] for t in transformer_tuples]
379390
self._update_fitted_transformers(transformers)
380391

381392
return self
@@ -404,7 +415,13 @@ def fit_transform(self, X, y=None):
404415
self._validate_remainder(X)
405416
self._validate_transformers()
406417

407-
result = self._fit_transform(X, y, _fit_transform_one)
418+
fit_transform_one = partial(
419+
_fit_transform_one,
420+
is_transform=True,
421+
clsname="ColumnTransformer",
422+
message=None)
423+
424+
result = self._fit_transform(X, y, fit_transform_one)
408425

409426
if not result:
410427
# All transformers are None

0 commit comments

Comments
 (0)