Я пытаюсь выполнить K-Fold Cross Validation и GridSearchCV, чтобы оптимизировать мою модель Gradient Boost - по ссылке - https://www.analyticsvidhya.com/blog/2016/02/complete-guide-parameter-tuning-gradient-boosting-gbm-python/
У меня есть несколько вопросов относительно скриншота модельного отчетаниже:
1) Как рассчитывается точность 0.814365?Где в сценарии выполняется разделение теста поезда?Если вы измените cv_folds = 5 на cv_folds = любое целое число, то точность все равно будет 0,814365.Infact, удаление cv_folds и ввод executeCV = False также дает ту же точность.
(Обратите внимание, что мой опыт обучения No CV 80/20 дает тест точности примерно 0,79-0,80)
2) Опять же, как рассчитывается оценка AUC (поезд)?И должен ли это быть РПЦ-АУК, а не АУК?Моя модель обучения SK дает AUC около 0,87.Как и точность, эта оценка кажется фиксированной.
3) Почему средняя оценка CV намного ниже, чем оценка AUC (Train)?Похоже, они оба используют roc_auc (моя модель sklearn дает 0,77 для ROC AUC)
df = pd.read_csv("123.csv")
target = 'APPROVED' #item to predict
IDcol = 'ID'
def modelfit(alg, ddf, predictors, performCV=True, printFeatureImportance=True, cv_folds=5):
#Fit the algorithm on the data
alg.fit(ddf[predictors], ddf['APPROVED'])
#Predict training set:
ddf_predictions = alg.predict(ddf[predictors])
ddf_predprob = alg.predict_proba(ddf[predictors])[:,1]
#Perform cross-validation:
if performCV:
cv_score = cross_validation.cross_val_score(alg, ddf[predictors], ddf['APPROVED'], cv=cv_folds, scoring='roc_auc')
#Print model report:
print ("\nModel Report")
print ("Accuracy : %f" % metrics.accuracy_score(ddf['APPROVED'].values, ddf_predictions))
print ("AUC Score (Train): %f" % metrics.roc_auc_score(ddf['APPROVED'], ddf_predprob))
if performCV:
print ("CV Score : Mean - %.5g | Std - %.5g | Min - %.5g | Max - %.5g" % (npy.mean(cv_score),npy.std(cv_score),npy.min(cv_score),npy.max(cv_score)))
#Print Feature Importance:
if printFeatureImportance:
feat_imp = pd.Series(alg.feature_importances_, predictors).sort_values(ascending=False)
feat_imp.plot(kind='bar', title='Feature Importances')
plt.ylabel('Feature Importance Score')
#Choose all predictors except target & IDcols
predictors = [x for x in df.columns if x not in [target, IDcol]]
gbm0 = GradientBoostingClassifier(random_state=10)
modelfit(gbm0, df, predictors)
![](https://i.stack.imgur.com/KBb0P.png)