@@ -122,8 +122,12 @@ def fit(self, X, y=None):
122
122
for columns , transformers in self .features :
123
123
if transformers is not None :
124
124
if isinstance (transformers , list ):
125
- for transformer in transformers :
126
- transformer .fit (self ._get_col_subset (X , columns ))
125
+ # first fit_transform all transformers except the last one
126
+ Xt = self ._get_col_subset (X , columns )
127
+ for transformer in transformers [:- 1 ]:
128
+ Xt = transformer .fit_transform (Xt )
129
+ # then fit the last one without transformation
130
+ transformers [- 1 ].fit (Xt )
127
131
else :
128
132
transformers .fit (self ._get_col_subset (X , columns ))
129
133
return self
@@ -139,14 +143,14 @@ def transform(self, X):
139
143
# columns could be a string or list of
140
144
# strings; we don't care because pandas
141
145
# will handle either.
142
- final_feature = self ._get_col_subset (X , columns )
146
+ Xt = self ._get_col_subset (X , columns )
143
147
if transformers is not None :
144
148
if isinstance (transformers , list ):
145
149
for transformer in transformers :
146
- final_feature = transformer .transform (final_feature )
150
+ Xt = transformer .transform (Xt )
147
151
else :
148
- final_feature = transformers .transform (final_feature )
149
- extracted .append (_handle_feature (final_feature ))
152
+ Xt = transformers .transform (Xt )
153
+ extracted .append (_handle_feature (Xt ))
150
154
151
155
# combine the feature outputs into one array.
152
156
# at this point we lose track of which features
0 commit comments