Python xgboost中的访问序列和评估错误

Python xgboost中的访问序列和评估错误,python,machine-learning,xgboost,Python,Machine Learning,Xgboost,我开始使用pythonxgboostbackage。是否有办法在每个培训阶段获得培训和验证错误?我在房间里找不到 培训了一个简单的模型并获得了输出: [09:17:37]src/tree/updater_prune.cc:74:树修剪结束,1根, 124个额外节点,0个修剪节点,最大深度=6 [0]评估rmse:0.407474列车rmse:0.346349[09:17:37] src/tree/updater\u prune.cc:74:树修剪结束,1根,116额外 节点,0个修剪节点,最大深

我开始使用python
xgboost
backage。是否有办法在每个培训阶段获得培训和验证错误?我在房间里找不到

培训了一个简单的模型并获得了输出:

[09:17:37]src/tree/updater_prune.cc:74:树修剪结束,1根, 124个额外节点,0个修剪节点,最大深度=6

[0]评估rmse:0.407474列车rmse:0.346349[09:17:37] src/tree/updater\u prune.cc:74:树修剪结束,1根,116额外 节点,0个修剪节点,最大深度=6

评估rmse:0.410902列车rmse:0.339925[09:17:38] src/tree/updater\u prune.cc:74:树修剪结束,1根,124额外 节点,0个修剪节点,最大深度=6

[2] 评估rmse:0.413563列车rmse:0.335941[09:17:38] src/tree/updater\u prune.cc:74:树修剪结束,1根,126个额外根 节点,0个修剪节点,最大深度=6

[3] 评估rmse:0.418412列车rmse:0.333071[09:17:38] src/tree/updater\u prune.cc:74:树修剪结束,1根,114额外 节点,0个修剪节点,最大深度=6


但是,我需要传递这些
eval rmse
train rmse
进一步编码或至少绘制这些曲线。

保存中间结果的一种方法是将
evals\u result
参数传递给
xgb.train
方法

假设您创建了一个XGB格式的
train
eval
矩阵,并为XGBoost初始化了一些参数
params
(在我的例子中,
params={'max_depth':2,'eta':1,'silent':1,'objective':'binary:logistic'}/code>)

  • 创建一个空的dict

    progress=dict()

  • 创建一个观察列表(我想您已经有了它,因为您正在打印train rmse)

    watchlist=[(列车,'train-rmse'),(eval,'eval-rmse')]

  • 将这些传递给
    xgb.train

    bst=xgb.train(参数,train,10,观察列表,评估结果=进度)

  • 迭代结束时,
    进度
    字典将包含所需的训练/验证错误

    > print progress
    {'train-rmse': {'error': ['0.50000', ....]}, 'eval-rmse': { 'error': ['0.5000',....]}}
    

    @MaxPY,这是对您对Sudeep Juvekar上述答案的评论的回复:您的进度字典的键被设置为您作为观察列表的第二个参数传递的任何字符串。比如说,

    watchlist  = [(train,'train-rmse-demo'), (eval, 'eval-rmse-demo')]
    

    将字典键设置为
    train rmse demo
    eval rmse demo

    谢谢,非常清楚,非常有用!在我使用的版本中,进度字典有不同的键