I am looking for a help building a data preprocessing pipleline using sklearn's ColumnTransformer functions.
Currently my pipleline looks something like this:
from scipy.stats.mstats import winsorize
from sklearn.compose import ColumnTransformer
from sklearn.impute import SimpleImputer
ColumnTransformer(remainder='passthrough',
transformers=[
('Winsorize', FunctionTransformer(winsorize,
kw_args={'axis': 0, 'inplace': False, 'limits': [0, 0.01]}), ['feat_1','feat_2']),
('num_impute', SimpleImputer(strategy='median'), ['feat_3', 'feat_4']),
])
Note that each transformer is provided a unique set of features.
The issue I am encountering is how to apply stacked analysis for the same features. For example,
ColumnTransformer(remainder='passthrough',
transformers=[
('Winsorize', FunctionTransformer(winsorize,
kw_args={'axis': 0, 'inplace': False, 'limits': [0, 0.01]}), ['feat_1','feat_2']),
('num_impute', SimpleImputer(strategy='median'), ['feat_1', 'feat_2', 'feat_3']),
])
Note that feat_1 and feat_2 where provided for both transformers.
a pipeline like this will create duplicate columns for feat_1 and feat_2 (Two columns based on Winsorize, and two columns based on num_impute)