ОБНОВЛЕНИЕ : В соответствии с комментарием ОП ниже, обновление scikit-learn с v0.21.3 до v0.22.2 решило проблему.
Как я уже упоминал в комментариях, Я не смог воспроизвести вашу проблему, либо с данными iris
, либо с фиктивными данными из нескольких конфигураций make_classification
.
Выполнение Scikit-learn. весь сценарий (код + данные), который вы разместили на Pastebin , не меняет этого; Вот последние строки вашего собственного кода:
results_in_splits = []
for k, v in cv.cv_results_.items():
if 'split' in k:
print('\t->', k)
results_in_splits.append(v[best_model_idx])
else:
print(k)
print('\n')
print(sum(results_in_splits) / len(results_in_splits))
print(cv.best_score_)
вывод:
mean_fit_time
std_fit_time
mean_score_time
std_score_time
param_subsample
param_n_estimators
param_min_child_weight
param_max_depth
param_gamma
param_colsample_bytree
params
-> split0_test_score
-> split1_test_score
-> split2_test_score
-> split3_test_score
-> split4_test_score
-> split5_test_score
-> split6_test_score
-> split7_test_score
-> split8_test_score
-> split9_test_score
-> split10_test_score
-> split11_test_score
-> split12_test_score
mean_test_score
std_test_score
rank_test_score
0.8926320979964705
0.8926320979964705
т.е., очевидно, две оценки идентичны, как и должно быть.
Почти идентичные оценки в ваших CV-расщеплениях, которые обсуждались в комментариях к другому ответу здесь, также не являются ошибкой или чем-то еще, просто артефактом неудачной ситуации: слишком маленький набор данных (678 выборок) в сочетании со слишком большим количеством разбивок CV ( 13) приводит к тому, что ваши проверочные образцы составляют только 13-14 для каждого разделения; Любые статистические данные c, рассчитанные для стольких выборок, являются ложными и на них не следует полагаться.
Но это последнее наблюдение на самом деле не имеет отношения к вашему основному вопросу: то, что вы сообщаете, не воспроизводимо в различных ситуациях, включая сценарий и данные, предоставленные вами.