【问题标题】:Retrieve parameters from load model in xgboost从 xgboost 中的负载模型中检索参数
【发布时间】:2018-11-01 14:10:25
【问题描述】:

我做了一个分类模型,已经使用保存了

bst.save_model('final_model.model')

在另一个文件中,我加载模型并使用以下方法对我的测试数据进行测试:

bst = xgb.Booster()  # init model
bst.load_model('final_model.model')  # load data
ypred = bst.predict(dtest)  # make prediction

由于我在训练过程中使用了 kfold,但需要使用整个测试文件进行测试(因此没有 kfold 拆分),因此我无法验证我是否仍然获得与加载模型时完全相同的结果在一个新文件中。这让我很好奇,好像有一种方法可以打印我加载的模型超参数。经过大量谷歌搜索后,我找到了一种在 R 中使用xgb.parameters(bst)xgb.attr(bst) 的方法 - 但我发现无法在 Python 中执行此操作。由于我不使用 R,我没有测试上述几行,但从文档来看,它似乎可以满足我的需要:在加载的模型中输出超参数。那么这可以在 Python 中使用 xgboost 完成吗?

编辑:我可以看到,如果我改为写ypred = bst.predict(dtest, ntree_limit=bst.best_iteration),我会收到错误'Booster' object has no attribute 'best_iteration'。所以看起来加载的模型没有记住我所有的超参数。如果我写bst.attributes(),我可以让它输出最佳迭代次数和评估分数——但我不知道如何输出实际使用的超参数。

【问题讨论】:

  • 我在Kaggle 上发现了类似的东西。通过 Github 帖子,我推断解决方案涉及回调。文档在这方面真的很少,所以任何帮助都会得到帮助。
  • 有同样的问题,真的很惊讶没有简单的方法来做到这一点!

标签: python xgboost hyperparameters


【解决方案1】:

如果您使用了 xgboost.sklearn.XGBModel 模型,那么您可以使用函数 get_xgb_params(),但基本 xgboost.Booster 类中没有等效项。请记住,Booster 是 xgboost 的 BASE 模型,它包含用于训练、预测和评估的低级例程。你可以找到更多信息here

【讨论】:

    猜你喜欢
    • 2021-04-05
    • 2017-12-07
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 2015-01-10
    • 2011-08-03
    • 2018-03-26
    • 2019-03-02
    相关资源
    最近更新 更多