2017-08-12 814 views
0

我使用交叉验证,像这样训练模式:LightGBM:继续训练模型

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 
) 

我想继续训练模型运行的第二个命令多次(可能与新的训练集或具有不同的参数),它会继续改进模型。

但是,当我尝试这个时,很明显模型是从头开始每次。

有没有不同的方法来做我想要的?

回答

1

看来,lightgbm不允许通过模型实例作为init_model,因为只要文件名:

init_model(字符串或无,可选(默认为无)) - LightGBM模型的文件名或用于继续训练的助推器实例。

link

0

进行训练,你必须再次做lgb.train,确保您在参数init_model='model.txt'包括。为确认您做得正确,培训期间的信息反馈应从lgb.cv继续。然后保存模型最好的迭代像这样bst.save_model('model.txt', num_iteration=bst.best_iteration)