我正在使用交叉验证来训练模型,如下所示:
classifier = lgb.Booster(
params=params,
train_set=lgb_train_set,
)
result = lgb.cv(
init_model=classifier,
params=params,
train_set=lgb_train_set,
num_boost_round=1000,
early_stopping_rounds=20,
verbose_eval=50,
shuffle=True
)
我想通过多次运行第二个命令(可能使用新的训练集或不同的参数)来继续训练模型,并且它将继续改进模型。
然而,当我尝试这样做时,很明显该模型每次都是从头开始。
有没有不同的方法来实现我的意图?
可以使用解决初始化模型lightgbm.train 的选项,它接受两个对象之一
- LightGBM 模型的文件名,或者
- 一个 lightgbm Booster 对象
代码说明:
import numpy as np
import lightgbm as lgb
data = np.random.rand(1000, 10) # 1000 entities, each contains 10 features
label = np.random.randint(2, size=1000) # binary target
train_data = lgb.Dataset(data, label=label, free_raw_data=False)
params = {}
#Initialize with 10 iterations
gbm_init = lgb.train(params, train_data, num_boost_round = 10)
print("Initial iter# %d" %gbm_init.current_iteration())
# Example of option #1 (pass a file):
gbm_init.save_model('model.txt')
gbm = lgb.train(params, train_data, num_boost_round = 10,
init_model='model.txt')
print("Option 1 current iter# %d" %gbm.current_iteration())
# Example of option #2 (pass a lightgbm Booster object):
gbm_2 = lgb.train(params, train_data, num_boost_round = 10,
init_model = gbm_init)
print("Option 2 current iter# %d" %gbm_2.current_iteration())
https://lightgbm.readthedocs.io/en/latest/pythonapi/lightgbm.train.html https://lightgbm.readthedocs.io/en/latest/pythonapi/lightgbm.train.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)