lgb 自定义函数
模板:
# f(preds: array, train_data: Dataset) -> name: str, eval_result: float, is_higher_better: bool
def f(preds, train_data):
'''
:param preds: array, 预测值
:param train_data: lgb Dataset, lgb的传入数据集
:return:
'''
### 返回 (评估指标名称, 评估计算值, 是否评估值越大模型性能越好)
return meaticname: str, eval_result: float, is_higher_better: bool
示例:
二分类 accuracy:
def accuracy(preds, train_data):
labels = train_data.get_label()
preds = 1. / (1. + np.exp(-preds))
return 'accuracy', np.mean(labels == (preds > 0.5)), True
多分类 f1_score:
# 多分类 f1_score 14分类
def MultiAuc_f1score(preds, train_data):
y_label = train_data.get_label()
preds = preds.reshape(14,-1).T # 14 分类
y_pred = np.argmax(preds, axis=-1)
multi_f1_score = f1_score(y_pred, y_label, average='macro')
return 'MultiAuc_f1score', multi_f1_score, True
测试案例:
自定义LightGBM评估指标实现与应用

本文介绍了如何在LightGBM中自定义评估指标,通过示例展示了二分类的accuracy和多分类的f1_score实现,并提供了一个自定义的auc评估函数。在实际训练过程中,自定义的my_auc与内置auc在epoch3时出现不一致,这可能是由于内部计算细节的差异。
最低0.47元/天 解锁文章

877

被折叠的 条评论
为什么被折叠?



