По умолчанию cross_val_score использует перекрестную проверку KFold. Это работает путем разделения
набора данных на K равных кратностей. Допустим, у нас есть 3 складки (fold1, fold2, fold3), тогда алгоритм работает следующим образом:
===========================================
Используйте fold1 и fold2 в качестве тренировочного набора в svm и проверьте производительность на fold3.
Используйте fold1 и fold3 в качестве тренировочного набора в svm и проверьте производительность на fold2.
Используйте fold2 и fold3 в качестве тренировочного набора в svm и проверьте производительность на fold1.
Таким образом, каждая складка используется как для обучения, так и для тестирования.
============================================
Если вы увеличите количество строк данных в сгибе, вы уменьшите количество обучающих выборок для каждого
из прогонов (выше это будут прогоны 1, 2 и 3), но общее количество обучающих выборок не изменится.
Как правило, выбор правильного количества складок — это и искусство, и наука. Для некоторых эвристик о том, как выбрать количество сгибов, подходит
этот ответ.
Суть в том, что на точность может немного повлиять выбор количества сгибов. Для больших наборов данных вы относительно безопасны с большим количеством сверток; для небольших наборов данных вы должны выполнить упражнение несколько раз с новыми случайными разбиениями.
==========================================
Выбор k=10 несколько произволен. Конкретно:
прежде всего, чтобы снизить дисперсию результата CV, вы можете и должны повторять/итерировать CV с новыми случайными разбиениями.
Это делает аргумент высокого k => больше времени вычислений в значительной степени неуместным, поскольку вы все равно хотите рассчитать множество моделей. Я склонен думать в основном об общем количестве рассчитанных моделей (по аналогии с начальной загрузкой). Таким образом, я могу выбрать 100 x 10-кратный CV или 200 x 5-кратный CV.
Обычно большое k означает меньшую (пессимистическую) предвзятость. (Некоторые исключения известны, в частности, для k = n, т.е. Исключение одного).
Если возможно, используется k, который является делителем размера выборки или размера групп в выборке, которые должны быть стратифицированы.
Слишком большое k означает, что возможно только небольшое количество комбинаций выборок, что ограничивает количество различных итераций.
==========================================
Для исключений: Сочетания (из n по 1) =n=k возможны различные комбинации модель/тестовый образец. Итерации вообще не имеют смысла.
Например. n = 20 и k = 10: Cочетания(из n = 20 по 2) = 190 = 19⋅k различных комбинаций модели/тестовой выборки. Вы можете рассмотреть здесь все возможные комбинации, так как 19 итераций k-кратного CV или всего 190 моделей — это не очень много.
Эти мысли имеют больший вес при небольших размерах выборки. С большим количеством доступных образцов k не имеет большого значения. Возможное количество комбинаций вскоре становится достаточно большим, поэтому (скажем) 100 итераций 10-кратного CV не подвергаются большому риску дублирования. Кроме того, большее количество обучающих выборок обычно означает, что вы находитесь на более плоской части кривой обучения, поэтому разница между суррогатными моделями и «настоящей» моделью, обученной на всех n выборках, становится незначительной.
Смотри также "Cross-Validation проверка: оценка производительности оценщика"
Раздел - Самый простой способ использовать перекрестную проверку — вызвать вспомогательную функцию cross_val_score для оценщика и набора данных.