Is your feature request related to a problem? Please describe.
Hola @solegalli voy a escribir este issue en español, primero que todo felicidades por el último realease, me ha dado un poco duro el cambio entre la api y el user guide, pero entiendo que era necesario. Ahora si el issue, creo que es necesario que todos los transformadores tengan algo tipo features_in_, features_out_ donde se listen los features que entran y salen del transformador; la razón de esto son los pipelines, ultimamente he estado trabajando con muchos pipelines, algunos algo complejos y cuando quiero revisar el feature_importance_ (xgb o rf) de algunos algoritmos me es complejo acertar qué feature es el que el algoritmo dice x%.
Describe the solution you'd like
voy a suponer un pipeline algo así:
full_xgb1_pipeline= [
('add_miss_indicator', AddMissingIndicator()),
('impute_floats', MeanMedianImputer(imputation_method='mean', variables=float_columns)),
('impute_ints', SklearnTransformerWrapper(transformer=SimpleImputer(strategy='most_frequent'), variables=int_columns)),
('outliers', Winsorizer(capping_method='gaussian', tail='both', variables=float_columns)),
('nesses', MathematicalCombination(variables_to_combine=nesses,
math_operations=['sum', 'prod', 'mean', 'std', 'max', 'min'],
new_variables_names=['sum_ness', 'prod_ness', 'mean_ness', 'std_ness', 'max_ness', 'min_ness'])),
('xgb_1', xgb.XGBClassifier(booster='gbtree', objective='binary:logistic', ...))
]
pipeline = Pipeline(pipeline_list)
cuando quiero conocer los mejores features realizaría algo así
full_xgb1_pipeline.named_steps['xgb_1'].feature_importances_
pero si quisiera los nombres pues, es algo complejo tenerlos, lo que usualmente estoy haciendo es que tomo el conjunto de entrenamiento, el hago un fit_transform().columns.to_list() (hasta el nesses en este caso). Desde luego esto resulta en un cálculo computacional que no siempre es ágil y pues no sé creo que es un poco innecesario.
Describe alternatives you've considered
pipeline_list = [
('add_miss_indicator', AddMissingIndicator()),
('impute_floats', MeanMedianImputer(imputation_method='mean', variables=float_columns)),
('impute_ints', SklearnTransformerWrapper(transformer=SimpleImputer(strategy='most_frequent'), variables=int_columns)),
('outliers', Winsorizer(capping_method='gaussian', tail='both', variables=float_columns)),
('nesses', MathematicalCombination(variables_to_combine=nesses,
math_operations=['sum', 'prod', 'mean', 'std', 'max', 'min'],
new_variables_names=['sum_ness', 'prod_ness', 'mean_ness', 'std_ness', 'max_ness', 'min_ness']))
)
columns = Pipeline(pipeline_list).fit_transform(X_train).columns.to_list()
pd.DataFrame({'feature': columns, 'importance': full_xgb1_pipeline.named_steps['xgb_1'].feature_importances_}).sort_values('importance', ascending=False)
Esto me implica:
- Separar el transformador de el algoritmo.
- Realizar un proceso que el pipeline ya realiza.
Si crees que vale la pena me avisas y podría dedicarle unos minutos cada día.
Is your feature request related to a problem? Please describe.
Hola @solegalli voy a escribir este issue en español, primero que todo felicidades por el último realease, me ha dado un poco duro el cambio entre la api y el user guide, pero entiendo que era necesario. Ahora si el issue, creo que es necesario que todos los transformadores tengan algo tipo
features_in_,features_out_donde se listen los features que entran y salen del transformador; la razón de esto son los pipelines, ultimamente he estado trabajando con muchos pipelines, algunos algo complejos y cuando quiero revisar el feature_importance_ (xgb o rf) de algunos algoritmos me es complejo acertar qué feature es el que el algoritmo dice x%.Describe the solution you'd like
voy a suponer un pipeline algo así:
cuando quiero conocer los mejores features realizaría algo así
pero si quisiera los nombres pues, es algo complejo tenerlos, lo que usualmente estoy haciendo es que tomo el conjunto de entrenamiento, el hago un
fit_transform().columns.to_list()(hasta elnessesen este caso). Desde luego esto resulta en un cálculo computacional que no siempre es ágil y pues no sé creo que es un poco innecesario.Describe alternatives you've considered
Esto me implica:
Si crees que vale la pena me avisas y podría dedicarle unos minutos cada día.