@@ -4234,9 +4234,14 @@ def fit_then_transform(est):
4234
4234
def fit_transform (est ):
4235
4235
return est .fit_transform (X , y )
4236
4236
4237
- transform_methods = [fit_then_transform , fit_transform ]
4238
- for transform_method in transform_methods :
4237
+ transform_methods = {
4238
+ "transform" : fit_then_transform ,
4239
+ "fit_transform" : fit_transform ,
4240
+ }
4241
+ for name , transform_method in transform_methods .items ():
4239
4242
transformer = clone (transformer )
4243
+ if not hasattr (transformer , name ):
4244
+ continue
4240
4245
X_trans_no_setting = transform_method (transformer )
4241
4246
4242
4247
# Auto wrapping only wraps the first array
@@ -4269,29 +4274,31 @@ def _output_from_fit_transform(transformer, name, X, df, y):
4269
4274
("fit.transform/array/df" , X , df ),
4270
4275
("fit.transform/array/array" , X , X ),
4271
4276
]
4272
- for (
4273
- case ,
4274
- data_fit ,
4275
- data_transform ,
4276
- ) in cases :
4277
- transformer .fit (data_fit , y )
4278
- if name in CROSS_DECOMPOSITION :
4279
- X_trans , _ = transformer .transform (data_transform , y )
4280
- else :
4281
- X_trans = transformer .transform (data_transform )
4282
- outputs [case ] = (X_trans , transformer .get_feature_names_out ())
4277
+ if all (hasattr (transformer , meth ) for meth in ["fit" , "transform" ]):
4278
+ for (
4279
+ case ,
4280
+ data_fit ,
4281
+ data_transform ,
4282
+ ) in cases :
4283
+ transformer .fit (data_fit , y )
4284
+ if name in CROSS_DECOMPOSITION :
4285
+ X_trans , _ = transformer .transform (data_transform , y )
4286
+ else :
4287
+ X_trans = transformer .transform (data_transform )
4288
+ outputs [case ] = (X_trans , transformer .get_feature_names_out ())
4283
4289
4284
4290
# fit_transform case:
4285
4291
cases = [
4286
4292
("fit_transform/df" , df ),
4287
4293
("fit_transform/array" , X ),
4288
4294
]
4289
- for case , data in cases :
4290
- if name in CROSS_DECOMPOSITION :
4291
- X_trans , _ = transformer .fit_transform (data , y )
4292
- else :
4293
- X_trans = transformer .fit_transform (data , y )
4294
- outputs [case ] = (X_trans , transformer .get_feature_names_out ())
4295
+ if hasattr (transformer , "fit_transform" ):
4296
+ for case , data in cases :
4297
+ if name in CROSS_DECOMPOSITION :
4298
+ X_trans , _ = transformer .fit_transform (data , y )
4299
+ else :
4300
+ X_trans = transformer .fit_transform (data , y )
4301
+ outputs [case ] = (X_trans , transformer .get_feature_names_out ())
4295
4302
4296
4303
return outputs
4297
4304
0 commit comments