class_docstr: shared set-up checks and methods across imputers
class_docstr_tok: ["shared","set-up","checks","and","methods","across","imputers"]
docstr: Get the names and number of features in the train set (the dataframe
  used during fit).
docstr_tok: ["Get","the","names","and","number","of","features","in","the","train","set","(","the","dataframe","used","during","fit",")","."]
code: def _get_feature_names_in(self, X):
      """Get the names and number of features in the train set (the dataframe
      used during fit)."""
  
      self.feature_names_in_ = X.columns.to_list()
      self.n_features_in_ = X.shape[1]
  
      return self
  
file_path: feature_engine/feature_engine/imputation/base_imputer.py
imports: import pandas
  from sklearn.base import BaseEstimator, TransformerMixin
  from sklearn.utils.validation import check_is_fitted
  from feature_engine.dataframe_checks import _check_X_matches_training_df, check_X
  from feature_engine._base_transformers.mixins import GetFeatureNamesOutMixin
  from feature_engine.tags import _return_tags
label_desc: Use image node_id 3 for calling the BaseImputer obj's underlying member method code with example usage: obj._get_feature_names_in(X) and returns: self