2017-04-06 4 views
0

Für die Funktion unten, bekomme ich nicht die Anzahl der Schätzer als Ausgang, aber umgekehrt bekomme ich einen der folgenden Typfehler.Nicht die Anzahl der Parameter für XGBoost

cv() got an unexpected keyword argument 'show_progress' 

Obwohl die Dokumentation das Flag enthält, erhalte ich den Typfehler. Ich folge diesem Blog zur Parameteroptimierung. Kann mir jemand zeigen, wo ich falsch liege? the blog Gibt es eine andere Möglichkeit, die Anzahl der Schätzer als Ausgabe zu erhalten?

def modelfit(alg, dtrain, predictors, useTrainCV=True, cv_folds=5, early_stopping_rounds=50): 
if useTrainCV: 
    xgb_param = alg.get_xgb_params() 
    xgtrain = xgb.DMatrix(dtrain[predictors].values, label=dtrain[target].values, silent=False) 
    cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], nfold=cv_folds, 
     metrics='auc', early_stopping_rounds=early_stopping_rounds, show_progress = True) 
    alg.set_params(n_estimators=cvresult.shape[0]) 

#Fit the algorithm on the data 
alg.fit(dtrain[predictors], dtrain[target],eval_metric='auc') 

#Predict training set: 
dtrain_predictions = alg.predict(dtrain[predictors]) 
dtrain_predprob = alg.predict_proba(dtrain[predictors])[:,1] 

#Print model report: 
print "\nModel Report" 
print "Accuracy : %.4g" % metrics.accuracy_score(dtrain[target].values, dtrain_predictions) 
print "AUC Score (Train): %f" % metrics.roc_auc_score(dtrain[target], dtrain_predprob) 


feat_imp = pd.Series(alg.booster().get_fscore()).sort_values(ascending=False) 
feat_imp.plot(kind='bar', title='Feature Importances') 
plt.ylabel('Feature Importance Score') 
+0

Welche Version von xgboost haben Sie? Für welche Version war das Tutorial? Warum stellst du '**' vor 'show_progress', es ist nicht in diesem Tutorial. –

+0

@VivekKumar Ich entfernte das * Ding. Ich wollte dieses Ding hervorheben. Könnten Sie mir zeigen, wie Sie die Version überprüfen können? –

+0

'pip freeze | grep xgboost' zeigt Ihnen die Version an, die Sie verwenden. Ich konnte den gleichen Fehler reproduzieren und liegt wahrscheinlich an der Tatsache, dass Sie 1.0 oder höher verwenden. Das Tutorial ist ziemlich alt, so dass ältere Versionen verwendet werden können. –

Antwort

3

Die neueste Version (0.6) von xgboost hat diese Optionen für xgb.cv:

xgboost.cv(params, dtrain, num_boost_round=10, nfold=3, 
stratified=False, folds=None, metrics=(), obj=None, feval=None, 
maximize=False, early_stopping_rounds=None, fpreproc=None, 
as_pandas=True, verbose_eval=None, show_stdv=True, seed=0, 
callbacks=None, shuffle=True) 

show_progress hat sich für verbose_eval veraltet. Siehe here

Verwandte Themen