Шаг 139.
Введение в машинное обучение с использованием Python. Оценка и улучшение качества ... . Перекрестная проверка со случайными перестановками при разбиении

    На этом шаге мы рассмотрим еще одну стратегию проверки.

    Еще одной, очень гибкой стратегией перекрестной проверки является перекрестная проверка со случайными перестановками при разбиении (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, который позволяет получить более надежные результаты при решении задач классификации.

    На следующем шаге мы рассмотрим перекрестную проверку с использованием групп.




Предыдущий шаг Содержание Следующий шаг