我做了一个分类模型,已经使用保存了
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 我没有测试上面的行,但是从文档来看它似乎做了我需要的:在加载的模型中输出超参数。那么这可以用 xgboost 在 Python 中完成吗?
编辑:我可以看到,如果我改写 ypred = bst.predict(dtest, ntree_limit=bst.best_iteration)
我会得到错误 'Booster ' 对象没有属性 'best_iteration'
。所以似乎加载的模型没有记住我所有的超参数。如果我写 bst.attributes()
我可以让它输出最佳迭代的次数和它的 eval 分数 - 但我不知道如何输出实际使用的超参数。
最佳答案
如果您使用了 xgboost.sklearn.XGBModel 模型,您可以使用函数 get_xgb_params(),但基类 xgboost.Booster 中没有等效项。请记住,Booster 是 xgboost 的基础模型,它包含用于训练、预测和评估的低级例程。您可以找到更多信息here
关于python - 从 xgboost 中的负载模型中检索参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50473925/