【问题标题】:How to write a custom evaluation metric in python for xgboost?如何在 python 中为 xgboost 编写自定义评估指标?
【发布时间】:2016-09-23 00:40:16
【问题描述】:

我想添加 kappa 评估指标以在 Python 中的 xgboost 中使用。我无法理解如何将 Python 函数与 xgboost 连接。

根据 xgboost 文档,“用户可以添加多个评估指标,对于 python 用户,请记住将指标作为参数对列表而不是映射传递,这样后一个 'eval_metric' 不会覆盖前一个”

这已在 xgboost's github page 中针对 R 提出,但不适用于 Python。

例如,如果 kappa 函数是:

def kappa(preds, y):
    # perform kappa calculation
    return score

如何使用 xgboost 实现它? 在eval_metric 参数中将'kappa' 指定为字符串 结果为XGBoostError: unknown evaluation metric type: kappa

同样指定 kappa 方法对象会导致 XGBoostError: unknown evaluation metric type: <function kappa at 0x7fbef4b03488>

如何在 python 中的 xgboost 中使用自定义评估指标?

【问题讨论】:

    标签: machine-learning xgboost objective-function


    【解决方案1】:

    将您的方法更改为:

    def kappa(preds, y):
        # perform kappa calculation
        return 'kappa', score
    

    并将其与feval 参数一起使用:

    bst = xgb.train(params, dtrain, num_rounds, watchlist, feval=kappa, maximize=False)
    

    在编写自定义评估指标时,请记住设置 maximize 参数。将其设置为 true 意味着算法在评估指标的得分越大时越好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-30
      • 2018-06-13
      • 1970-01-01
      • 2020-06-01
      • 2022-12-20
      • 2019-01-06
      • 2022-01-13
      • 2021-07-18
      相关资源
      最近更新 更多