【发布时间】: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