14

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

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

这已在xgboost 的R 的 github 页面中提出,但不适用于 Python。

例如,如果 kappa 函数是:

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

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

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

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

4

1 回答 1

17

将您的方法更改为:

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

于 2016-07-05T08:07:53.560 回答