class_docstr: Class for mapping features to the specific domain.
  
  The idea is that there would be a subclass for each domain (text, tables,
  images, etc), so that we can have a general Explanation class, and separate
  out the specifics of visualizing features in here.
docstr: Maps the feature ids to concrete names.
  
  Default behaviour is the identity function. Subclasses can implement
  this as they see fit.
  
  Args:
      exp: list of tuples [(id, weight), (id,weight)]
      kwargs: optional keyword arguments
  
  Returns:
      exp: list of tuples [(name, weight), (name, weight)...]
docstr_tok: ["Maps","the","feature","ids","to","concrete","names",".","Default","behaviour","is","the","identity","function",".","Subclasses","can","implement","this","as","they","see","fit",".","Args",":","exp",":","list","of","tuples","[","(","id",",","weight",")",",","(","id",",","weight",")","]","kwargs",":","optional","keyword","arguments","Returns",":","exp",":","list","of","tuples","[","(","name",",","weight",")",",","(","name",",","weight",")","...","]"]
code: def map_exp_ids(self, exp, **kwargs):
      """Maps the feature ids to concrete names.
  
      Default behaviour is the identity function. Subclasses can implement
      this as they see fit.
  
      Args:
          exp: list of tuples [(id, weight), (id,weight)]
          kwargs: optional keyword arguments
  
      Returns:
          exp: list of tuples [(name, weight), (name, weight)...]
      """
      return exp
  
imports: from io import open
  import os
  import os.path
  import json
  import string
  import numpy
  from .exceptions import LimeError
  from sklearn.utils import check_random_state
label_desc: Use image node_id 2 for calling the DomainMapper obj's underlying member method code with example usage: obj.map_exp_ids(exp) and returns: exp