如何在python中传递自定义度量(gboost)?

2024-10-03 23:18:26 发布

您现在位置:Python中文网/ 问答频道 /正文

以下代码不起作用,其中aucerraoeerr是自定义的评估指标,它只使用eval_metric或{}或{}

prtXGB.fit(trainData, targetVar, early_stopping_rounds=10, 
eval_metric= [aucerr, aoeerr], eval_set=[(valData, valTarget)])

但是,下面的代码和内置的评估指标是有效的

^{pr2}$

这是我的自定义函数

def aucerr(y_predicted, y_true):
    labels = y_true.get_label()
    auc1 = metrics.roc_auc_score(labels,y_predicted)
    return 'AUCerror', abs(1-auc1)

def aoeerr(y_predicted, y_true):
    labels = y_true.get_label()
    actuals = sum(labels)
    predicted = sum(y_predicted)
    ae = actuals/predicted
    return 'AOEerror', abs(1-ae)

Tags: 代码truegetlabelsreturndefevalabs