code: def get_hyperparameter_search_space(
      self,
      feat_type: Optional[FEAT_TYPE_TYPE] = None,
      dataset_properties=None,
      default=None,
      include=None,
      exclude=None,
  ):
      cs = ConfigurationSpace()
  
      if dataset_properties is None:
          dataset_properties = {}
  
      # Compile a list of legal preprocessors for this problem
      available_preprocessors = self.get_available_components(
          dataset_properties=dataset_properties,
          include=include,
          exclude=exclude,
      )
  
      if len(available_preprocessors) == 0:
          raise ValueError(
              "No preprocessors found, please add NoPreprocessing"
          )
  
      if default is None:
          defaults = [
              "no_preprocessing",
              "select_percentile",
              "pca",
              "truncatedSVD",
          ]
          for default_ in defaults:
              if default_ in available_preprocessors:
                  default = default_
                  break
  
      preprocessor = CategoricalHyperparameter(
          "__choice__",
          list(available_preprocessors.keys()),
          default_value=default,
      )
      cs.add_hyperparameter(preprocessor)
      for name in available_preprocessors:
          preprocessor_configuration_space = available_preprocessors[
              name
          ].get_hyperparameter_search_space(
              dataset_properties=dataset_properties
          )
          parent_hyperparameter = {
              "parent": preprocessor,
              "value": name,
          }
          cs.add_configuration_space(
              name,
              preprocessor_configuration_space,
              parent_hyperparameter=parent_hyperparameter,
          )
  
      return cs
  
file_path: auto-sklearn/autosklearn/pipeline/components/feature_preprocessing/__init__.py
imports: from typing import Optional, Type
  import os
  from collections import OrderedDict
  from ConfigSpace.configuration_space import ConfigurationSpace
  from ConfigSpace.hyperparameters import CategoricalHyperparameter
  from autosklearn.askl_typing import FEAT_TYPE_TYPE
  from ..base import AutoSklearnChoice, AutoSklearnPreprocessingAlgorithm, ThirdPartyComponents, _addons, find_components
label_desc: Use image node_id 3 for calling the FeaturePreprocessorChoice obj's underlying member method code with example usage: obj.get_hyperparameter_search_space(feat_type, dataset_properties, default, include, exclude) and returns: cs