В качестве тестовых данных для отработки методов перекрестной проверки, загрузим тестовый массив данных ирисов

Разделим этот массив данных на тренировочную и тестовую выборки. Для этого загрузим функцию train_test_split. Укажем в параметре test_size объем тестовой выборки равный 0.4 (т.е. 40% на тестовую и 60% на тренировочную).

После разделения выборок — обучим модель случайного леса (с 5 деревьями) на тренировочной выборке.

После обучения — оценим качество получившийся модели. Получилась очень хорошая модель с показателем R2 близким к 1.

Оценим эту же самую модель на тестовой выборке:

Качество модели снизилось достаточно сильно (более чем на 10%), что может свидетельствовать о переобучении модели или о том, что так совпали данные при разделении на тестовую/тренировочную выборки.

Для более полной оценки переобучения модели такую процедуру можно повторять несколько раз (k — раз) со всей выборкой. Механизм такой проверки (k-fold) представлен на следующей картинке:

Для реализации механизма на практике используем функцию cross_val_score

Оценим эти данные с точки зрения статистики:

В среднем на тестовой выборке коэффициент R2 составляет 95% и стандартным отклонением в 3%.

Самостоятельное задание:
Используя предыдущий источник данных по Титанику:
1. Разбейте выборке на тренировочную и тестовую в соотношении 80/20
2. Постройте модель машинного обучение (любую на Ваш вкус) выживаемости пассажиров и оцените качество на тестовой выборке
3. Использую подход k-fold, оцените на сколько переобученная получилась модель

Перекрестная проверка в Python