From 2b41782f0cfb81e8cc065f2915b215758a7838ef Mon Sep 17 00:00:00 2001 From: Linlang <30293408+SunsetWolf@users.noreply.github.com> Date: Thu, 13 Nov 2025 11:50:43 +0800 Subject: [PATCH] fix(gbdt): correct dtrain assignment in finetune() to use Dataset instead of tuple (#2049) --- qlib/contrib/model/gbdt.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/qlib/contrib/model/gbdt.py b/qlib/contrib/model/gbdt.py index f14205f88..22c29cd49 100644 --- a/qlib/contrib/model/gbdt.py +++ b/qlib/contrib/model/gbdt.py @@ -51,7 +51,7 @@ class LGBModel(ModelFT, LightGBMFInt): w = reweighter.reweight(df) else: raise ValueError("Unsupported reweighter type.") - ds_l.append((lgb.Dataset(x.values, label=y, weight=w), key)) + ds_l.append((lgb.Dataset(x.values, label=y, weight=w, free_raw_data=False), key)) return ds_l def fit( @@ -109,8 +109,10 @@ class LGBModel(ModelFT, LightGBMFInt): verbose level """ # Based on existing model and finetune by train more rounds - dtrain, _ = self._prepare_data(dataset, reweighter) # pylint: disable=W0632 - if dtrain.empty: + ds_l = self._prepare_data(dataset, reweighter) + dtrain, _ = ds_l[0] + + if dtrain.construct().num_data() == 0: raise ValueError("Empty data from dataset, please check your dataset config.") verbose_eval_callback = lgb.log_evaluation(period=verbose_eval) self.model = lgb.train(