class_docstr: Checks the input data to Auto-Sklearn.
  
  It also determines what columns are categorical and which ones are numerical,
  so that the pre-processing pipeline can process this columns accordingly.
  
  Attributes
  ----------
  feat_type: Optional[List[str]] = None
      In case the dataset is not a pandas DataFrame:
          +   If provided, this list indicates which columns should be treated as
              categorical it is internally transformed into a dictionary that
              indicates a mapping from column index to categorical/numerical.
          +   If not provided, by default all columns are treated as numerical
  
      If the input dataset is of type pandas dataframe, this argument
      must be none, as the column type will be inferred from the pandas dtypes.
  
  data_type:
      Class name of the data type provided during fit.
class_docstr_tok: ["Checks","the","input","data","to","Auto-Sklearn",".","It","also","determines","what","columns","are","categorical","and","which","ones","are","numerical",",","so","that","the","pre-processing","pipeline","can","process","this","columns","accordingly",".","Attributes","--","--","--","--","--","feat_type",":","Optional","[","List","[","str","]","]","=","None","In","case","the","dataset","is","not","a","pandas","DataFrame",":","+","If","provided",",","this","list","indicates","which","columns","should","be","treated","as","categorical","it","is","internally","transformed","into","a","dictionary","that","indicates","a","mapping","from","column","index","to","categorical\/numerical",".","+","If","not","provided",",","by","default","all","columns","are","treated","as","numerical","If","the","input","dataset","is","of","type","pandas","dataframe",",","this","argument","must","be","none",",","as","the","column","type","will","be","inferred","from","the","pandas","dtypes",".","data_type",":","Class","name","of","the","data","type","provided","during","fit","."]
code: def __init__(
      self,
      feat_type: Optional[List[str]] = None,
      logger: Optional[PickableLoggerAdapter] = None,
      allow_string_features: bool = True,
  ) -> None:
      # If a dataframe was provided, we populate
      # this attribute with a mapping from column to
      # {numerical | categorical | string}
      self.feat_type: Optional[Dict[Union[str, int], str]] = None
      if feat_type is not None:
          if isinstance(feat_type, dict):
              self.feat_type = feat_type
          elif not isinstance(feat_type, List):
              raise ValueError(
                  "Auto-Sklearn expects a list of categorical/"
                  "numerical/string feature types, yet a"
                  " {} was provided".format(type(feat_type))
              )
          else:
              # Convert to a dictionary which will be passed to the ColumnTransformer
              # Column Transformer supports strings or integer indexes
              self.feat_type = {
                  i: feat for i, feat in enumerate(feat_type)
              }
  
      # Register types to detect unsupported data format changes
      self.data_type = None  # type: Optional[type]
      self.dtypes = {}  # type: Dict[str, str]
  
      self.logger = (
          logger if logger is not None else logging.getLogger(__name__)
      )
  
      self._is_fitted = False
      self.allow_string_features = allow_string_features
  
file_path: auto-sklearn/autosklearn/data/feature_validator.py
imports: from typing import Dict, List, Optional, Tuple, Union, cast
  import logging
  import warnings
  import numpy
  import pandas
  from pandas.api.types import is_numeric_dtype, is_sparse
  from scipy.sparse import csr_matrix, spmatrix
  from sklearn.base import BaseEstimator
  from sklearn.exceptions import NotFittedError
  from autosklearn.util.logging_ import PickableLoggerAdapter
label_desc: Use image node_id 1 to create a new FeatureValidator object from inherited base classes: BaseEstimator with example: obj = FeatureValidator(feat_type, logger, allow_string_features)