8000 Revert "MNT do not call fit twice in TransformedTargetetRegressor (#1… · xhluca/scikit-learn@7fa0efd · GitHub
[go: up one dir, main page]

Skip to content

Commit 7fa0efd

Browse files
author
Xing
authored
Revert "MNT do not call fit twice in TransformedTargetetRegressor (scikit-learn#11641)"
This reverts commit 2c365e8.
1 parent 457f128 commit 7fa0efd

File tree

2 files changed

+7
-42
lines changed

2 files changed

+7
-42
lines changed

sklearn/compose/_target.py

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -113,12 +113,6 @@ def __init__(self, regressor=None, transformer=None,
113113
self.check_inverse = check_inverse
114114

115115
def _fit_transformer(self, y):
116-
"""Check transformer and fit transformer.
117-
118-
Create the default transformer, fit it and make additional inverse
119-
check on a subset (optional).
120-
121-
"""
122116
if (self.transformer is not None and
123117
(self.func is not None or self.inverse_func is not None)):
124118
raise ValueError("'transformer' and functions 'func'/"
@@ -183,20 +177,19 @@ def fit(self, X, y, sample_weight=None):
183177
y_2d = y
184178
self._fit_transformer(y_2d)
185179

186-
# transform y and convert back to 1d array if needed
187-
y_trans = self.transformer_.transform(y_2d)
188-
# FIXME: a FunctionTransformer can return a 1D array even when validate
189-
# is set to True. Therefore, we need to check the number of dimension
190-
# first.
191-
if y_trans.ndim == 2 and y_trans.shape[1] == 1:
192-
y_trans = y_trans.squeeze(axis=1)
193-
194180
if self.regressor is None:
195181
from ..linear_model import LinearRegression
196182
self.regressor_ = LinearRegression()
197183
else:
198184
self.regressor_ = clone(self.regressor)
199185

186+
# transform y and convert back to 1d array if needed
187+
y_trans = self.transformer_.fit_transform(y_2d)
188+
# FIXME: a FunctionTransformer can return a 1D array even when validate
189+
# is set to True. Therefore, we need to check the number of dimension
190+
# first.
191+
if y_trans.ndim == 2 and y_trans.shape[1] == 1:
192+
y_trans = y_trans.squeeze(axis=1)
200193
if sample_weight is None:
201194
self.regressor_.fit(X, y_trans)
202195
else:

sklearn/compose/tests/test_target.py

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -265,31 +265,3 @@ def test_transform_target_regressor_ensure_y_array():
265265
tt.predict(X.tolist())
266266
assert_raises(AssertionError, tt.fit, X, y.tolist())
267267
assert_raises(AssertionError, tt.predict, X)
268-
269-
270-
class DummyTransformer(BaseEstimator, TransformerMixin):
271-
"""Dummy transformer which count how many time fit was called."""
272-
def __init__(self, fit_counter=0):
273-
self.fit_counter = fit_counter
274-
275-
def fit(self, X, y=None):
276-
self.fit_counter += 1
277-
return self
278-
279-
def transform(self, X):
280-
return X
281-
282-
def inverse_transform(self, X):
283-
return X
284-
285-
286-
@pytest.mark.parametrize("check_inverse", [False, True])
287-
def test_transform_target_regressor_count_fit(check_inverse):
288-
# regression test for gh-issue #11618
289-
# check that we only call a single time fit for the transformer
290-
X, y = friedman
291-
ttr = TransformedTargetRegressor(
292-
transformer=DummyTransformer(), check_inverse=check_inverse
293-
)
294-
ttr.fit(X, y)
295-
assert ttr.transformer_.fit_counter == 1

0 commit comments

Comments
 (0)
0