5

Python xgboostbackage を使い始めました。各トレーニング エポックでトレーニング エラーと検証エラーを取得する方法はありますか? ドキュメントで見つけられない

単純なモデルをトレーニングし、出力を得ました:

[09:17:37] src/tree/updater_prune.cc:74: ツリーの剪定の終了、1 つのルート、124 の余分なノード、0 の剪定されたノード、max_depth=6

[0] eval-rmse:0.407474 train-rmse:0.346349 [09:17:37] src/tree/updater_prune.cc:74: 木の剪定の終了、1 つの根、116 の余分なノード、0 の剪定されたノード、max_depth=6

1 eval-rmse:0.410902 train-rmse:0.339925 [09:17:38] src/tree/updater_prune.cc:74: ツリーの剪定終了、1 ルート、124 余分なノード、0 剪定ノード、max_depth=6

[2] eval-rmse:0.413563 train-rmse:0.335941 [09:17:38] src/tree/updater_prune.cc:74: 木の枝刈り終了、1 根、126 余分なノード、0 枝刈りされたノード、max_depth=6

[3] eval-rmse:0.418412 train-rmse:0.333071 [09:17:38] src/tree/updater_prune.cc:74: ツリーの剪定終了、1 根、114 余分なノード、0 剪定ノード、max_depth=6

ただし、これらeval-rmsetrain-rmseさらにコードで渡すか、少なくともこれらの曲線をプロットする必要があります。

4

2 に答える 2

14

中間結果を保存する 1 つの方法は、メソッドevals_resultに引数を渡すことxgb.trainです。

traineval行列を XGB 形式で作成し、paramsXGBoost のいくつかのパラメーターを初期化したとします (私の場合はparams = {'max_depth':2, 'eta':1, 'silent':1, 'objective':'binary:logistic' })。

  1. 空の辞書を作成する

    progress = dict()

  2. ウォッチリストを作成します (train-rmse を印刷していることを考えると、既に作成されていると思います)。

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

  3. これらをに渡します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',....]}}
于 2016-02-04T19:52:14.303 に答える