我想在Python中为xgboost添加kappa评估指标。我在理解如何将Python函数与xgboost连接上遇到了困难。
根据xgboost的文档,“用户可以添加多个评估指标,对于Python用户,请记住将指标作为参数对的列表传递,而不是映射,这样后面的‘eval_metric’就不会覆盖前面的。”
这个问题在xgboost的GitHub页面上已经针对R语言提出,但对于Python还没有解决方案。
例如,如果kappa函数是这样的:
def kappa(preds, y): # 执行kappa计算 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): # 执行kappa计算 return 'kappa', score
并使用feval
参数:
bst = xgb.train(params, dtrain, num_rounds, watchlist, feval=kappa, maximize=False)
在编写自定义评估指标时,请记住设置maximize
参数。将其设置为true意味着算法在评估指标得分更高时表现更好。