【问题标题】:python xgboost continue training on existing modelpython xgboost 继续对现有模型进行训练
【发布时间】:2018-04-10 13:08:18
【问题描述】:

假设我建立了一个 xgboost 模型:

bst = xgb.train(param0, dtrain1, num_round, evals=[(dtrain, "training")])

地点:

  • param0 是 xgb 的一组参数,
  • dtrain1 是一个可以训练的 DMatrix
  • num_round 是轮数

然后,我将模型保存到磁盘:

bst.save_model("xgbmodel")

稍后,我想重新加载我保存的模型并继续使用 dtrain2 对其进行训练

有人知道怎么做吗?

【问题讨论】:

    标签: python xgboost


    【解决方案1】:

    您甚至不必从磁盘加载模型并重新训练。

    您需要做的只是带有附加参数的相同 xgb.train 命令:xgb_model=(您在问题中保存的 xgboost 模型完整路径名或 Booster 对象)。

    例子:

    bst = xgb.train(param0, dtrain2, num_round, evals=[(dtrain, "training")], xgb_model='xgbmodel')
    

    祝你好运!

    【讨论】:

      【解决方案2】:

      对于希望继续使用XGBClassifier 或从.fitsklearn 函数获得的对象的用户。

      from xgboost import XGBClassifier
      
      # best_est = best number of tree
      # best_lr = best learning days
      # best_subsample = best subsample bw 0 and 1
      
      params = {'objective': 'binary:logistic', 'use_label_encoder': False, 
                'seed': 27, 'eval_metric': 'logloss', 'n_estimators': best_est, 
                'learning_rate': best_lr, 'subsample': best_subsample}
      
      # train iteration 1  below
      
      model = XGBClassifier(**params)
      model.fit(x_train_1, y_train_1)
      
      # train iteration 2 below
      
      model = model.fit(x_train_2, y_train_2, xgb_model=model.get_booster())
      
      

      在上面的代码中 x_train_*y_train_* 是 pandas DataFrame 类型的对象。

      这里要学习的主要概念是,xgb 核心功能,而再训练总是将booster 作为输入。因此可以提供模型对象中的boostersaved model path

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-30
        • 2019-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-28
        • 2020-06-20
        相关资源
        最近更新 更多