您能否在LightGBM.train()中访问每轮提升的分数?

2024-09-29 23:26:50 发布

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

基本信息

lgbm.train()使用early_stopping计算目标函数&feval每轮提升后的分数,我们可以让它每verbose_eval轮打印一次,如下所示:

bst=lgbm.train(**params)
[10]    valid_0's binary_logloss: 0.215654  valid_0's BinaryError: 0.00775126
[20]    valid_0's binary_logloss: 0.303113  valid_0's BinaryError: 0.00790619
[30]    valid_0's binary_logloss: 0.358056  valid_0's BinaryError: 0.0838744
[40]    valid_0's binary_logloss: 0.386763  valid_0's BinaryError: 0.138462
[50]    valid_0's binary_logloss: 0.411467  valid_0's BinaryError: 0.176986

问题:

有没有办法获取每轮提升的分数列表

我能在文档中找到的最接近的东西 &bst.__dict__bst.best_score

defaultdict(collections.OrderedDict,
             {'valid_0': OrderedDict([('binary_logloss', 0.4233895131745753),
                           ('BinaryError', 0.194285077972568)])})

Tags: 函数信息目标train分数ordereddictbinaryvalid
1条回答
网友
1楼 · 发布于 2024-09-29 23:26:50

您可以使用evals_result参数,如下所示

evals_result = {}

bst=lgbm.train(evals_result=evals_result, valid_sets = [valid_set, train_set],
               valid_names = [‘valid’, ‘train’], **params)

evals_result
>>> {‘train’: {‘logloss’: [‘0.36483’, ‘0.32617’, …]}, ‘valid’: {‘logloss’: [‘0.479168’, ‘0.317850’, …]}}

你将有一本字典,用于记录每一轮的训练和有效的集合分数

相关问题 更多 >

    热门问题