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)
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)