Example #1
0
def _train_and_evaluate(estimator, dataset, output_dir):
    """Runs model training and evaluation.

    Args:
      estimator: (pipeline.Pipeline), Pipeline instance, assemble pre-processing
        steps and model training
      dataset: (pandas.DataFrame), DataFrame containing training data
      output_dir: (string), directory that the trained model will be exported

    Returns:
      None
    """
    x_train, y_train, x_val, y_val = utils.data_train_test_split(dataset)
    estimator.fit(x_train, y_train)

    # Write model and eval metrics to `output_dir`
    model_output_path = os.path.join(output_dir, 'model',
                                     metadata.MODEL_FILE_NAME)

    utils.dump_object(estimator, model_output_path)

    if metadata.METRIC_FILE_NAME is not None:
        # Note: for now, use `cross_val_score` defaults (i.e. 3-fold)
        scores = model_selection.cross_val_score(estimator, x_val, y_val, cv=3)

        logging.info('Scores: %s', scores)

        metric_output_path = os.path.join(output_dir, 'experiment',
                                          metadata.METRIC_FILE_NAME)

        utils.dump_object(scores, metric_output_path)

        # The default name of the metric is training/hptuning/metric.
        # We recommend that you assign a custom name
        # The only functional difference is that if you use a custom name,
        # you must set the hyperparameterMetricTag value in the
        # HyperparameterSpec object in the job request to match your chosen name
        hpt = hypertune.HyperTune()
        hpt.report_hyperparameter_tuning_metric(
            hyperparameter_metric_tag='my_metric_tag',
            metric_value=np.mean(scores),
            global_step=1000)
Example #2
0
def _train_and_evaluate(estimator, dataset, output_dir):
  """Runs model training and evaluation.

  Args:
    estimator: (pipeline.Pipeline), Pipeline instance, assemble pre-processing
      steps and model training
    dataset: (pandas.DataFrame), DataFrame containing training data
    output_dir: (string), directory that the trained model will be exported

  Returns:
    None
  """
  x_train, y_train, x_val, y_val = utils.data_train_test_split(dataset)
  estimator.fit(x_train, y_train)

  # Note: for now, use `cross_val_score` defaults (i.e. 3-fold)
  scores = model_selection.cross_val_score(estimator, x_val, y_val, cv=3)

  logging.info(scores)

  # Write model and eval metrics to `output_dir`
  model_output_path = os.path.join(
      output_dir, 'model', metadata.MODEL_FILE_NAME)

  metric_output_path = os.path.join(
      output_dir, 'experiment', metadata.METRIC_FILE_NAME)

  utils.dump_object(estimator, model_output_path)
  utils.dump_object(scores, metric_output_path)

  # The default name of the metric is training/hptuning/metric.
  # We recommend that you assign a custom name
  # The only functional difference is that if you use a custom name,
  # you must set the hyperparameterMetricTag value in the
  # HyperparameterSpec object in your job request to match your chosen name.
  hpt = hypertune.HyperTune()
  hpt.report_hyperparameter_tuning_metric(
      hyperparameter_metric_tag='my_metric_tag',
      metric_value=np.mean(scores),
      global_step=1000)