class_docstr: Class for recovering a mapping used by FeatureHasher.
code: def get_feature_names(
      self, always_signed=True, always_positive=False
  ):
      # type: (bool, bool) -> FeatureNames
      self.recalculate_attributes()
  
      # lists of names with signs of known features
      column_ids, term_names, term_signs = self._get_collision_info()
      feature_names = {}
      for col_id, names, signs in zip(
          column_ids, term_names, term_signs
      ):
          if always_positive:
              feature_names[col_id] = [
                  {"name": name, "sign": 1} for name in names
              ]
          else:
              if not always_signed and _invert_signs(signs):
                  signs = [-sign for sign in signs]
              feature_names[col_id] = [
                  {"name": name, "sign": sign}
                  for name, sign in zip(names, signs)
              ]
      return FeatureNames(
          feature_names,
          n_features=self.n_features,
          unkn_template=self.unkn_template,
      )
  
imports: from __future__ import absolute_import
  from collections import defaultdict, Counter
  from itertools import chain
  from typing import List, Iterable, Any, Dict, Tuple, Union
  import numpy
  import six
  from sklearn.base import BaseEstimator, TransformerMixin
  from sklearn.feature_extraction.text import HashingVectorizer, FeatureHasher
  from sklearn.pipeline import FeatureUnion
  from eli5._feature_names import FeatureNames
label_desc: Use image node_id 4 for calling the FeatureUnhasher obj's underlying member method code with example usage: obj.get_feature_names(always_signed, always_positive) and returns: FeatureNames