Как извлечь выбранные функции из GridSearchCV в sklearn?

#scikit-learn #pipeline #grid-search

Вопрос:

Я выполняю GridSearchCV над моей SelectFromModel в конвейере, например:

 [...] from sklearn.feature_selection import SelectFromModel  sfm = SelectFromModel(lr)  ### MAGIC PART OF PIPELINE!!! pipe = Pipeline(steps=[('preprocessor', preprocessor),  ('selector', sfm),  ('regressor', lr)])  from sklearn.model_selection import GridSearchCV  param_grid = {  "selector__threshold": ['0.45*median',  '0.5*median',  '0.55*median',  '1*median',  '1.25*median'] } search = GridSearchCV(pipe,  param_grid,  n_jobs=-1,  refit=True,  verbose=1)  print("Selected features") ???  

Как я могу получить выбранные объекты из моей окончательной модели?

ПРАВКА: Предполагая, что порядок не изменится, я создам что-нибудь быстрое и грязное.

 def get_selected_features():  all_features = [] # list, len=0   num_features # list, len=8   cat_features_encoded = search.best_estimator_.named_steps['preprocessor'].transformers_[1][1].named_steps['onehot'].get_feature_names(cat_features)  cat_features_encoded.reshape(cat_features_encoded.size) # numpy.ndarray, shape=(331,)   all_features.append(num_features)  for x in cat_features_encoded:  all_features.append(x)   mask = search.best_estimator_.named_steps["selector"].get_support() # numpy.ndarray, shape=(339,)   selected_features = []  for feature, active in zip(all_features, mask.reshape(mask.size)):  if (active):  selected_features.append(feature)   return selected_features  

Я надеюсь, что это правильно.