2017-08-12 275 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)