我制作了一个分类模型,使用
保存bst.save_model('final_model.model')
在另一个文件中我加载模型并使用以下方法对我的testdata进行测试:
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' object has no attribute 'best_iteration'
。所以似乎加载的模型不记得我的所有超参数。如果我写bst.attributes()
我可以得到它输出最佳迭代的数量和它的eval得分 - 但我不知道如何输出使用的实际超参数。
答案 0 :(得分:0)
如果您使用过xgboost.sklearn.XGBModel模型,则可以使用函数get_xgb_params(),但在xgboost.Booster基类中没有等效项。请记住,Booster是xgboost的BASE模型,其中包含用于训练,预测和评估的低级例程。您可以找到更多信息here