首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xgboost中的访问训练与评估误差

xgboost中的访问训练与评估误差
EN

Stack Overflow用户
提问于 2016-02-04 09:58:05
回答 2查看 10.4K关注 0票数 6

我开始使用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-rmsetrain-rmse,或者至少绘制这些曲线。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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' })。

  1. 创建一个空的数据集 progress = dict()
  2. 创建一个监视列表,(考虑到您正在打印列车-rmse),我猜您已经有了它。 watchlist = [(train,'train-rmse'), (eval, 'eval-rmse')]
  3. 把这些传递给xgb.train bst = xgb.train(param, train, 10, watchlist, evals_result=progress)

在迭代结束时,progress字典将包含所需的训练/验证错误。

代码语言:javascript
复制
> print progress
{'train-rmse': {'error': ['0.50000', ....]}, 'eval-rmse': { 'error': ['0.5000',....]}}
票数 15
EN

Stack Overflow用户

发布于 2017-08-27 18:16:39

@MaxPY,这是对您对Su深层Juvekar上面的回答的评论的回应:进度字典的键被设置为您传递给监视列表的任何字符串,作为第二个参数。例如,

代码语言:javascript
复制
watchlist  = [(train,'train-rmse-demo'), (eval, 'eval-rmse-demo')]

将字典键设置为train-rmse-demoeval-rmse-demo

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35197799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档