на кэггл и после Startified 7-fold кросс-валидации классификатора на нем получаю средний ROC-AUC = 0.89.
Однако когда делаю простой train_test_split - тренируюсь на train, оцениваю на test - получаю ROC-AUC = 0.81.
Когда в submission на кэггл отправляю предсказания на тестовом кэггловском датасете - выдает скор = 0.8.
Почему так далеко от кросс-валидации?
Я бы еще мог предположить что разные выборки в тесте и трейне, но почему тогда обычный train_test_split выдал результат - самый правдоподобный по сравнению к кэгглу?
Вы используете стратификацию?
я юзаю StratifiedKFold: X, y = train.drop(['booking_status'], axis=1), train['booking_status'] xgb_classifier = xgb.XGBClassifier(n_jobs=-1, eval_metric='auc', n_estimators=50) stratified_cv = StratifiedKFold(n_splits=10, shuffle=True, random_state=42) roc_auc_scores = cross_val_score(xgb_classifier, X, y, cv=stratified_cv, scoring='roc_auc') mean_roc_auc = roc_auc_scores.mean() print(f"Mean ROC AUC Score: {mean_roc_auc:.4f}")
сэмплов много?
7 Folds
кстати, у вас в коде написано 10: stratified_cv = StratifiedKFold(n_splits=10, shuffle=True, random_state=42)
Обсуждают сегодня