class_docstr: When expanding the columns from variables to features, this class keeps
  track of the 1:m mapping between the collapsed and expanded columns.
  
  Args:
      schema: A dictionary mapping a variable (can be any hashable object) to
          a data type. Permissible data types are stored in the class
          attribute ``PERMISSIBLE_TYPES``.
class_docstr_tok: ["When","expanding","the","columns","from","variables","to","features",",","this","class","keeps","track","of","the","1",":","m","mapping","between","the","collapsed","and","expanded","columns",".","Args",":","schema",":","A","dictionary","mapping","a","variable","(","can","be","any","hashable","object",")","to","a","data","type",".","Permissible","data","types","are","stored","in","the","class","attribute","``","PERMISSIBLE_TYPES","``","."]
docstr: The number of features. If the schema only has binary and continuous
  variables, this is equal to ``n_variables``.
docstr_tok: ["The","number","of","features",".","If","the","schema","only","has","binary","and","continuous","variables",",","this","is","equal","to","``","n_variables","``","."]
code: def n_features(self):
      """
      The number of features. If the schema only has binary and continuous
      variables, this is equal to ``n_variables``.
      """
      return len(self.feature_list)
  
file_path: causalnex/causalnex/structure/categorical_variable_mapper.py
imports: import re
  from collections import OrderedDict
  from itertools import chain
  from typing import Dict, Hashable, Iterator, List, Optional, Set, Union
  from networkx.classes.reportviews import NodeView
label_desc: Use image node_id 10 for calling the VariableFeatureMapper obj's underlying member method code with example usage: obj.n_features() and returns: len