2017-05-18 1 views
1

PythonでXGBoost(PyPl:0.6の最新バージョン)を使用して予測モデルを作成しており、データの約半分を訓練しています。私は私の最終的なモデルを持っていることを今、私はすべての私のデータでそれを訓練し、私は前に見たことがないこのメッセージを、得た:PythonでXGBoostのtree_method paramを指定する

をツリー方法は、自動的に高速化のための「約」であると選択されています。 が古い動作(単一マシン上の正確な貪欲アルゴリズム)を使用するように、 tree_method「正確」に」再現可能な例として

を設定し、次のコードは、また、私のマシン上でそのメッセージを生成します。

import numpy as np 
import xgboost as xgb 

rows = 10**7 
cols = 20 
X = np.random.randint(0, 100, (rows, cols))  
y = np.random.randint(0,2, size=rows) 

clf = xgb.XGBClassifier(max_depth=5) 
clf.fit(X,y)  

私は初期化と私のモデルのfit()段階の両方で「正確」にtree_methodを設定しようとしましたが、それぞれがスローエラー:

import xgboost as xgb 
clf = xgb.XGBClassifier(tree_method = 'exact') 
clf 
> __init__() got an unexpected keyword argument 'tree_method' 


my_pipeline.fit(X_train, Y_train, clf__tree_method='exact') 
> self._final_estimator.fit(Xt, y, **fit_params) TypeError: fit() got an 
> unexpected keyword argument 'tree_method' 

PythonでXGBoostでtree_method = 'exact'を指定するにはどうすればよいですか?

+0

[Pythonドキュメント]を見てみると(https://xgboost.readthedocs.io/en/latest/python/python_api.html#をmodule-xgboost.core)、 'tree_method'という名前のパラメータは見つかりません。 –

答えて

1

XGBoost parameter documentationによると、これはtree_methodのデフォルトが "auto"であるためです。 「自動」設定はデータ依存です。「中小」データの場合は「厳密」なアプローチを使用し、「非常に大きな」データセットの場合は「近似」を使用します。トレーニングセット全体(50%ではなく)を使用し始めたときに、tree_methodの自動価値を変更するトレーニングサイズのしきい値を超えていなければなりません。ドキュメントからは、そのしきい値に到達するために必要な観測数は不明ですが、それは5〜1,000万行の間であると思われます(rows = 10**7があるため)。

tree_method引数は(それがありませんように聞こえるので、多分バグレポートを提出?)XGBoost Pythonモジュールで公開されていますが、tree_methodはRのAPIで公開されている場合、私は知りません。

あなたがその警告メッセージが表示さなぜドキュメントが説明します

enter image description here

関連する問題