我开始使用python xgboost背景。是否有一种方法可以在每个培训阶段获得培训和验证错误?我在文档里找不到
训练了一个简单的模型并得到了输出:
09:17:37 src/ tree /updater_prune.cc:74:树剪枝结束,1根,124个额外节点,0剪枝节点,max_depth=6 eval:0.407474列车-rmse:0.346349 09:17:37 src/ tree /updater_prune.cc:74:树修剪结束,1根,116个额外节点,0剪枝节点,max_depth=6 1 0.339925:0.410902列车-rmse:0.339925 09:17:38 src/ tree /updater_prune.cc:74:树修剪结束,1根,124个额外节点,0剪枝节点,max_depth=6 2 0.413563:0.413563列车-rmse:0.335941 09:17:38 src/ tree /updater_prune.cc:74:树修剪结束,1根,126个额外节点,0剪枝节点,max_depth=6 3 0.333071:0.418412列车-rmse:0.333071 09:17:38 src/ tree /updater_prune.cc:74:树修剪结束,1根,114个额外节点,0剪枝节点,max_depth=6
但是,我需要在代码中进一步传递这些eval-rmse和train-rmse,或者至少绘制这些曲线。
发布于 2016-02-04 19:52:14
保存中间结果的一种方法是将evals_result参数传递给xgb.train方法。
假设您已经以XGB格式创建了一个train和一个eval矩阵,并为XGBoost初始化了一些参数params (在我的例子中是params = {'max_depth':2, 'eta':1, 'silent':1, 'objective':'binary:logistic' })。
progress = dict()watchlist = [(train,'train-rmse'), (eval, 'eval-rmse')]xgb.train
bst = xgb.train(param, train, 10, watchlist, evals_result=progress)在迭代结束时,progress字典将包含所需的训练/验证错误。
> print progress
{'train-rmse': {'error': ['0.50000', ....]}, 'eval-rmse': { 'error': ['0.5000',....]}}发布于 2017-08-27 18:16:39
@MaxPY,这是对您对Su深层Juvekar上面的回答的评论的回应:进度字典的键被设置为您传递给监视列表的任何字符串,作为第二个参数。例如,
watchlist = [(train,'train-rmse-demo'), (eval, 'eval-rmse-demo')]将字典键设置为train-rmse-demo和eval-rmse-demo
https://stackoverflow.com/questions/35197799
复制相似问题