2017-04-06 89 views
0

對於下面的函數,我沒有得到估計的數量作爲輸出,但相反,我得到了以下類型的錯誤。沒有得到XGBoost的參數數量

cv() got an unexpected keyword argument 'show_progress' 

即使文檔包含標誌,我得到的類型錯誤。我正在關注這個博客進行參數調整。任何人都可以指出我哪裏錯了? the blog 有沒有其他方法可以將估計量的數量作爲輸出?

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

您擁有哪個版本的xgboost?那個教程是哪個版本的?你爲什麼把'**'放在'show_progress'前面,它不在那裏。 –

+0

@VivekKumar我刪除了*東西。我想強調這一點。你能指導我如何檢查版本嗎? –

+0

'pip freeze | grep xgboost'會顯示你正在使用的版本。我能夠重現你的相同錯誤,很可能是因爲你使用的是1.0或更高版本。該教程相當陳舊,因此可能會使用舊版本。 –

回答

3

xgboost的最新版本(0.6)有以下選項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,取而代之verbose_eval的被棄用。請參閱here