class_docstr: Example:
      >>> auto_est = AutoEstimator.from_torch(model_creator=model_creator,
                                              optimizer=get_optimizer,
                                              loss=nn.BCELoss(),
                                              logs_dir="/tmp/zoo_automl_logs",
                                              resources_per_trial={"cpu": 2},
                                              name="test_fit")
      >>> auto_est.fit(data=data,
                       validation_data=validation_data,
                       search_space=create_linear_search_space(),
                       n_sampling=4,
                       epochs=1,
                       metric="accuracy")
      >>> best_model = auto_est.get_best_model()
docstr: Automatically fit the model and search for the best hyperparameters.
  
  :param data: train data.
      If the AutoEstimator is created with from_torch, data can be a tuple of
      ndarrays or a PyTorch DataLoader or a function that takes a config dictionary as
      parameter and returns a PyTorch DataLoader.
      If the AutoEstimator is created with from_keras, data can be a tuple of
      ndarrays.
      If data is a tuple of ndarrays, it should be in the form of (x, y),
      where x is training input data and y is training target data.
  :param epochs: Max number of epochs to train in each trial. Defaults to 1.
      If you have also set metric_threshold, a trial will stop if either it has been
      optimized to the metric_threshold or it has been trained for {epochs} epochs.
  :param validation_data: Validation data. Validation data type should be the same as data.
  :param metric: String or customized evaluation metric function.
      If string, metric is the evaluation metric name to optimize, e.g. "mse".
      If callable function, it signature should be func(y_true, y_pred), where y_true and
      y_pred are numpy ndarray. The function should return a float value as evaluation result.
  :param metric_mode: One of ["min", "max"]. "max" means greater metric value is better.
      You have to specify metric_mode if you use a customized metric function.
      You don't have to specify metric_mode if you use the built-in metric in
      zoo.orca.automl.metrics.Evaluator.
  :param metric_threshold: a trial will be terminated when metric threshold is met
  :param n_sampling: Number of times to sample from the search_space. Defaults to 1.
      If hp.grid_search is in search_space, the grid will be repeated n_sampling of times.
      If this is -1, (virtually) infinite samples are generated
      until a stopping condition is met.
  :param search_space: a dict for search space
  :param search_alg: str, all supported searcher provided by ray tune
         (i.e."variant_generator", "random", "ax", "dragonfly", "skopt",
         "hyperopt", "bayesopt", "bohb", "nevergrad", "optuna", "zoopt" and
         "sigopt")
  :param search_alg_params: extra parameters for searcher algorithm besides search_space,
      metric and searcher mode
  :param scheduler: str, all supported scheduler provided by ray tune
  :param scheduler_params: parameters for scheduler
code: def fit(
      self,
      data,
      epochs=1,
      validation_data=None,
      metric=None,
      metric_mode=None,
      metric_threshold=None,
      n_sampling=1,
      search_space=None,
      search_alg=None,
      search_alg_params=None,
      scheduler=None,
      scheduler_params=None,
  ):
      """
      Automatically fit the model and search for the best hyperparameters.
  
      :param data: train data.
          If the AutoEstimator is created with from_torch, data can be a tuple of
          ndarrays or a PyTorch DataLoader or a function that takes a config dictionary as
          parameter and returns a PyTorch DataLoader.
          If the AutoEstimator is created with from_keras, data can be a tuple of
          ndarrays.
          If data is a tuple of ndarrays, it should be in the form of (x, y),
          where x is training input data and y is training target data.
      :param epochs: Max number of epochs to train in each trial. Defaults to 1.
          If you have also set metric_threshold, a trial will stop if either it has been
          optimized to the metric_threshold or it has been trained for {epochs} epochs.
      :param validation_data: Validation data. Validation data type should be the same as data.
      :param metric: String or customized evaluation metric function.
          If string, metric is the evaluation metric name to optimize, e.g. "mse".
          If callable function, it signature should be func(y_true, y_pred), where y_true and
          y_pred are numpy ndarray. The function should return a float value as evaluation result.
      :param metric_mode: One of ["min", "max"]. "max" means greater metric value is better.
          You have to specify metric_mode if you use a customized metric function.
          You don't have to specify metric_mode if you use the built-in metric in
          zoo.orca.automl.metrics.Evaluator.
      :param metric_threshold: a trial will be terminated when metric threshold is met
      :param n_sampling: Number of times to sample from the search_space. Defaults to 1.
          If hp.grid_search is in search_space, the grid will be repeated n_sampling of times.
          If this is -1, (virtually) infinite samples are generated
          until a stopping condition is met.
      :param search_space: a dict for search space
      :param search_alg: str, all supported searcher provided by ray tune
             (i.e."variant_generator", "random", "ax", "dragonfly", "skopt",
             "hyperopt", "bayesopt", "bohb", "nevergrad", "optuna", "zoopt" and
             "sigopt")
      :param search_alg_params: extra parameters for searcher algorithm besides search_space,
          metric and searcher mode
      :param scheduler: str, all supported scheduler provided by ray tune
      :param scheduler_params: parameters for scheduler
      """
      if self._fitted:
          raise RuntimeError(
              "This AutoEstimator has already been fitted and cannot fit again."
          )
  
      metric_mode = AutoEstimator._validate_metric_mode(
          metric, metric_mode
      )
  
      self.searcher.compile(
          data=data,
          model_builder=self.model_builder,
          epochs=epochs,
          validation_data=validation_data,
          metric=metric,
          metric_mode=metric_mode,
          metric_threshold=metric_threshold,
          n_sampling=n_sampling,
          search_space=search_space,
          search_alg=search_alg,
          search_alg_params=search_alg_params,
          scheduler=scheduler,
          scheduler_params=scheduler_params,
      )
      self.searcher.run()
      self._fitted = True
  
file_path: analytics-zoo/pyzoo/zoo/orca/automl/auto_estimator.py
imports: from zoo.orca.automl.search import SearchEngineFactory
label_desc: Use image node_id 4 for calling the AutoEstimator obj's underlying member method code with example usage: obj.fit(data, epochs, validation_data, metric, metric_mode, metric_threshold, n_sampling, search_space, search_alg, search_alg_params, scheduler, scheduler_params) without return types