Learners with a selector potentially have a smaller feature name size than is stored in the feature_vectorizer. A simple method accessing the actual used feature names for a learner with or without a selector would be useful
def get_feature_names(self): if self.feat_selector: return self.feat_vectorizer.get_feature_names_out()[self.feat_selector.get_support()] else: return self.feat_vectorizer.get_feature_names_out()