如何在 python 中为 xgboost 编写自定义评估指标?

How to write a custom evaluation metric in python for xgboost?

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

根据 xgboost 文档,"User can add multiple evaluation metrics, for python user, remember to pass the metrics in as list of parameters pairs instead of map, so that latter ‘eval_metric’ won’t override previous one"

这已在 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 中使用自定义评估指标?

将您的方法更改为:

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 意味着随着评估指标得分的提高,算法会变得越来越好。