LightGM 工具
项目描述
LightGBM 工具
此Python包实现了针对LightGBM的工具。在当前版本中,lightgbm-tools专注于二分类指标。
这个工具具体解决了什么问题?
LightGBM有一些内置指标可以使用。这些指标很有用,但有限。一些重要的指标缺失。这些指标包括F1分数和平均精度(AP)。
可以使用此工具轻松添加这些指标。这是通过LightGBM内部机制实现的,其中我们可以将回调分配给lightgbm.train
的feval
参数(请参阅lightgbm.train文档)。
维护者
此项目由 One Conversation 团队维护,该团队属于 德国电信股份公司。
用法
您可以在以下位置找到功能齐全的示例: https://github.com/telekom/lightgbm-tools/blob/main/examples/main_usage.py
最简单的方法是使用预定义的回调函数。这些包括
lightgbm_tools.metrics.lgbm_f1_score_callback
lightgbm_tools.metrics.lgbm_accuracy_score_callback
lightgbm_tools.metrics.lgbm_average_precision_score_callback
lightgbm_tools.metrics.lgbm_roc_auc_score_callback
lightgbm_tools.metrics.lgbm_recall_score_callback
lightgbm_tools.metrics.lgbm_precision_score_callback
这里以 F1 为例,展示如何使用预定义的回调函数
import lightgbm
from lightgbm_tools.metrics import lgbm_f1_score_callback
bst = lightgbm.train(
params,
train_data,
valid_sets=val_data,
num_boost_round=6,
verbose_eval=False,
evals_result=evals_result,
feval=lgbm_f1_score_callback, # here we pass the callback to LightGBM
)
您还可以重用其他度量标准的实现。以下是如何使用 scikit-learn 中的 balanced_accuracy_score
的示例
import lightgbm
from sklearn.metrics import balanced_accuracy_score
from lightgbm_tools.metrics import LightGbmEvalFunction, binary_eval_callback_factory
# define own custom eval (metric) function for balanced_accuracy_score
lgbm_balanced_accuracy = LightGbmEvalFunction(
name="balanced_accuracy",
function=balanced_accuracy_score,
is_higher_better=True,
needs_binary_predictions=True,
)
# use the factory function to create the callback
lgbm_balanced_accuracy_callback = binary_eval_callback_factory([lgbm_balanced_accuracy])
bst = lightgbm.train(
params,
train_data,
valid_sets=val_data,
num_boost_round=6,
verbose_eval=False,
evals_result=evals_result,
feval=lgbm_balanced_accuracy_callback, # here we pass the callback to LightGBM
)
此工具还可以同时计算多个度量标准。可以通过向 binary_eval_callback_factory
传递多个度量标准的定义(列表形式)来实现。以下预定义的度量标准定义(LightGbmEvalFunction
)可用
lightgbm_tools.metrics.lgbm_f1_score
lightgbm_tools.metrics.lgbm_accuracy_score
lightgbm_tools.metrics.lgbm_average_precision_score
lightgbm_tools.metrics.lgbm_roc_auc_score
lightgbm_tools.metrics.lgbm_recall_score
lightgbm_tools.metrics.lgbm_precision_score
以下是如何组合 F1 和平均精度的示例
import lightgbm
from lightgbm_tools.metrics import (
binary_eval_callback_factory,
lgbm_average_precision_score,
lgbm_f1_score,
)
# use the factory function to create the callback
callback = binary_eval_callback_factory([lgbm_average_precision_score, lgbm_f1_score])
bst = lightgbm.train(
params,
train_data,
valid_sets=val_data,
num_boost_round=6,
verbose_eval=False,
evals_result=evals_result,
feval=callback, # here we pass the callback to LightGBM
)
安装
可以使用 pip 安装 lightgbm-tools
pip install lightgbm-tools
要本地进行开发和运行单元测试,请确保已安装所有相关依赖项。如果您在本地进行开发,可能希望以“可编辑模式”安装
pip install -e .[all]
许可
版权所有 (c) 2022 Philip May,德国电信股份公司
根据 MIT 许可证(“许可证”);除非遵守许可证,否则不得使用此文件。您可以通过查看存储库中的文件 LICENSE 获得许可证的副本。