На этом шаге мы рассмотрим еще одну стратегию проверки.
Еще одной, очень гибкой стратегией перекрестной проверки является перекрестная проверка со случайными перестановками при разбиении (shuffle-split cross-validation). В этом виде проверки каждое разбиение выбирает train_size точек для обучающего набора и test_size точек для тестового набора (при этом обучающее и тестовое подмножества не пересекаются). Точки выбираются с возвращением. Разбиение повторяется n_iter раз. Рисунок 1 иллюстрирует четырехпроходное разбиение набора данных, состоящего из 10 точек, на обучающий набор из 5 точек и тестовый набор из 2 точек (чтобы задать абсолютные размеры этих подмножеств вы можете использовать для train_size и test_size целочисленные значения, либо числа с плавающей точкой, чтобы задать доли от общей выборки):
[In 13]:
mglearn.plots.plot_shuffle_split()
Рис.1. Перекрестная проверка со случайными перестановками при разбиении для набора данных из 10 точек, train_size=5, test_size=2 и n_iter=4
Программный код, приведенный ниже, 10 раз разбивает данные на 50%-ный обучающий набор и 50%-ный тестовый набор:
[In 14]: from sklearn.model_selection import ShuffleSplit shuffle_split = ShuffleSplit(test_size=.5, train_size=.5, n_splits=10) scores = cross_val_score(logreg, iris.data, iris.target, cv=shuffle_split) print("Значения правильности перекрестной проверки:\n{}".format(scores)) Значения правильности перекрестной проверки: [0.97333333 0.98666667 0.94666667 0.97333333 0.94666667 0.96 0.98666667 0.97333333 0.92 0.96 ]
Перекрестная проверка со случайными перестановками при разбиении позволяет задавать количество итераций независимо от размеров обучающего и тестового наборов, что иногда может быть полезно. Кроме того, этот метод позволяет использовать на каждой итерации лишь часть данных (значения train_size и test_size необязательно должны в сумме давать 1). Подобное прореживание данных может быть полезно при работе с большими наборами данных.
Существует также стратифицированный вариант ShuffleSplit, названный StratifiedShuffleSplit, который позволяет получить более надежные результаты при решении задач классификации.
На следующем шаге мы рассмотрим перекрестную проверку с использованием групп.