如何在Python中为XGBoost编写自定义评估指标?

14

我想在Python中使用xgboost添加kappa评估指标。我不太明白如何将Python函数与xgboost连接起来。

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

这个问题在xgboost的GitHub页面上提出了R语言的解决方法,但没有针对Python。

例如,如果kappa函数为:

def kappa(preds, y):
    # perform kappa calculation
    return score
如何在xgboost中实现自定义评估指标? 在eval_metric参数中将'kappa'作为字符串指定会导致XGBoostError:未知的评估指标类型:kappa。 同样地,指定kappa方法对象会导致XGBoostError:未知的评估指标类型:。 如何在Python中使用自定义评估指标?
1个回答

18

改为以下方法:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接