0

我尝试使用 SageMaker 的 AutoPilot 来解决二进制分类问题,我发现它使用 f1 作为评估指标。但是当我尝试编写一些代码而不进行这样的调整时:

xgb.set_hyperparameters(max_depth=5,
                        eta=0.2,
                        gamma=4,
                        min_child_weight=6,
                        subsample=0.8,
                        objective='binary:logistic',
                        eval_metric='f1',
                        num_round=100)

这会产生以下错误:

[2021-10-17:00:02:19:ERROR] 客户错误:不支持度量标准“f1”。参数 'eval_metric' 应该是以下选项之一:'rmse'、'mae'、'logloss'、'error'、'merror'、'mlogloss'、'auc'、'ndcg'、'map'、'poisson- nloglik','gamma-nloglik','gamma-deviance','tweedie-nloglik'。

由于自动驾驶仪能够计算 F1,我觉得它以某种方式在超参数设置中得到支持?我是不是误会了?

任何帮助将不胜感激。

4

1 回答 1

0

您可以通过在初始化 Estimator 对象时将指标名称和正则表达式列表指定为 metric_definitions 参数来定义要发送到 CloudWatch 的指标。在此处查看:文档

import sagemaker
from sagemaker.estimator import Estimator

estimator = Estimator(
    image_uri="your-own-image-uri",
    role=sagemaker.get_execution_role(), 
    sagemaker_session=sagemaker.Session(),
    instance_count=1,
    instance_type='ml.c4.xlarge',
    metric_definitions=[
       {'Name': 'train:error', 'Regex': 'Train_error=(.*?);'},
       {'Name': 'validation:error', 'Regex': 'Valid_error=(.*?);'}
    ]
)
于 2022-02-23T19:56:07.027 回答