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

时间:2016-05-25 12:06:59

标签: machine-learning xgboost objective-function

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

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

这已经在xgboost's github page中针对R而不是针对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中使用自定义评估指标?

1 个答案:

答案 0 :(得分:13)

将您的方法更改为:

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