Я сделал двоичную классификацию для набора числовых данных с помощью Xboost в python.
model = XGBClassifier(max_depth=6,n_estimators=50)
fitted_model = model.fit(train_x, train_y)
Когда я спросил ACC для двоичного предсказания (fit_model.score (train_x, train_y)), я получил 0,701.
Во время тестирования я использовал 10 CrossValidation, которые показывают ACC 0,69
kfold = KFold(n_splits=10, random_state=seed)
cv_preds = cross_val_predict(fitted_model, test_x, test_y, cv=kfold)
metrics.accuracy_score(test_y, cv_preds)
В качестве последнего шага я протестировал Forex_Proba с CV, который дал больше ACC, чем два последних метода.
Я использовал пример из Scikit Learn (Операционная характеристика приемника (ROC) с перекрестной проверкой)
cv = StratifiedKFold(n_splits=6)
.......
for train, test in cv.split(X, y):
probas_ = fitted_model.predict_proba(X[test])
fpr, tpr, thresholds = roc_curve(y[test], probas_[:, 1])
tprs[-1][0] = 0.0
roc_auc = auc(fpr, tpr)
........
Мой вопрос:
Как я могу получить лучшие результаты при тестировании модели, чем при обучении? Это потому, что я использовал PREDICT_PROBA, а не PREDICT? Это ложный результат или я могу использовать его для оценки?