2016-05-23 6 views
2

私はxgboostを使いたいという分類上の問題があります。 私は、次のしている:Pythonでxgboostのグリッド検索を実行するにはどうすればよいですか?

alg = xgb.XGBClassifier(objective='binary:logistic') 

そして、私はそれがで損失を記録しテストしてい:私は次のように検索するグリッドを実行しようとしています

cross_validation.cross_val_scoree(alg, train_cluster_x, train_cluster_y, cv=5, scoring='log_loss') 

clf = GridSearchCV(alg,{'max_depth': [2,4,6], 
         'n_estimators': [50,100,200]}, 
         verbose=1, 
         error_score='log_loss') 

clf.fit(train_cluster_x,train_cluster_y) 
clf.best_score_, clf.best_params_ 

をしかし、私は取得異なる結果。 グリッド検索でログの消失をクロス検証として計算していますか?

+1

異なる結果が得られた場合は、スクリプトを再実行するたびに異なるベストスコアと最良のパラメータが得られることを意味しますか?もしそうなら、それはかなり一般的です。再実行するたびに、データが別々に分割されているため、最良のモデルの詳細は、しばしばわずかに異なります。あなたが受け取った出力の例を与えることができれば、あなたが何を期待し、何を見ているかを私たちに知らせることができれば役に立ちます。 – user6275647

答えて

2

グリッド検索の設定に違いがあります。 error_scoreは、エラー発生時の値を意味します。スコアリングパラメータを 'neg_log_loss'に指定する必要があります。

clf = GridSearchCV(alg,{'max_depth': [2,4,6], 
        'n_estimators': [50,100,200]}, 
        verbose=1, 
        scoring='neg_log_loss') 

clf.fit(train_cluster_x,train_cluster_y) 
clf.best_score_, clf.best_params_ 
関連する問題