<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def create_feature_map(features, feature_indices, output_dir):
 """Returns feature_map about the transformed features. feature_map includes information such as: 1, cat1=0 2, cat1=1 3, numeric1 Returns: List in the from [(index, feature_description)] """

  feature_map = []
  for name, info in feature_indices:
    transform_name = features[name]['transform']
    source_column = features[name]['source_column']
    if transform_name in [IDENTITY_TRANSFORM, SCALE_TRANSFORM]:
      feature_map.append((info['index_start'], name))
    elif transform_name in [ONE_HOT_TRANSFORM, MULTI_HOT_TRANSFORM]:
      vocab, _ = read_vocab_file(
          os.path.join(output_dir, VOCAB_ANALYSIS_FILE % source_column))
      for i, word in enumerate(vocab):
        if transform_name == ONE_HOT_TRANSFORM:
          feature_map.append((info['index_start'] + i, '%s=%s' % (source_column, word)))
        elif transform_name == MULTI_HOT_TRANSFORM:
          feature_map.append((info['index_start'] + i, '%s has "%s"' % (source_column, word)))
    elif transform_name == IMAGE_TRANSFORM:
      for i in range(info['size']):
        feature_map.append((info['index_start'] + i, '%s image feature %d' % (source_column, i)))

  return feature_map