StratifiedKFold#

класс sklearn.model_selection.StratifiedKFold(n_splits=5, *, перемешивание=False, random_state=None)[источник]#

Стратифицированный K-блочный перекрестный валидатор по классам.

Предоставляет индексы train/test для разделения данных на обучающие и тестовые наборы.

Этот объект перекрёстной проверки является вариацией KFold, который возвращает стратифицированные фолды. Фолды создаются с сохранением процентного соотношения образцов для каждого класса в y в бинарной или многоклассовой классификации.

Подробнее в Руководство пользователя.

Для визуализации поведения перекрёстной проверки и сравнения общих методов разделения scikit-learn обратитесь к Визуализация поведения кросс-валидации в scikit-learn

Примечание

Стратификация по метке класса решает инженерную проблему, а не статистическую. См. Итераторы перекрестной проверки со стратификацией на основе меток классов для получения дополнительной информации.

Параметры:
n_splitsint, по умолчанию=5

Количество фолдов. Должно быть не менее 2.

Изменено в версии 0.22: n_splits значение по умолчанию изменено с 3 на 5.

перемешиваниеbool, по умолчанию=False

Перемешивать ли образцы каждого класса перед разделением на пакеты. Обратите внимание, что образцы внутри каждого разбиения не будут перемешаны.

random_stateint, экземпляр RandomState или None, по умолчанию=None

Когда shuffle равно True, random_state влияет на порядок индексов, который контролирует случайность каждого фолда для каждого класса. В противном случае оставьте random_state как None. Передайте целое число для воспроизводимого результата при множественных вызовах функции. См. Глоссарий.

Смотрите также

RepeatedStratifiedKFold

Повторяет стратифицированный K-Fold n раз.

Примечания

Реализация разработана для:

  • Генерировать тестовые наборы так, чтобы все содержали одинаковое распределение классов или как можно ближе к нему.

  • Быть инвариантным к меткам классов: перемаркировка y = ["Happy", "Sad"] to y = [1, 0] не должен изменять сгенерированные индексы.

  • Сохранить зависимости порядка в упорядочении набора данных, когда shuffle=False: все образцы класса k в некотором тестовом наборе были смежными в y или разделены в y образцами из классов, отличных от k.

  • Создает тестовые наборы, где наименьший и наибольший отличаются не более чем на один образец.

Изменено в версии 0.22: Предыдущая реализация не следовала последнему ограничению.

Примеры

>>> import numpy as np
>>> from sklearn.model_selection import StratifiedKFold
>>> X = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])
>>> y = np.array([0, 0, 1, 1])
>>> skf = StratifiedKFold(n_splits=2)
>>> skf.get_n_splits()
2
>>> print(skf)
StratifiedKFold(n_splits=2, random_state=None, shuffle=False)
>>> for i, (train_index, test_index) in enumerate(skf.split(X, y)):
...     print(f"Fold {i}:")
...     print(f"  Train: index={train_index}")
...     print(f"  Test:  index={test_index}")
Fold 0:
  Train: index=[1 3]
  Test:  index=[0 2]
Fold 1:
  Train: index=[0 2]
  Test:  index=[1 3]
6332()[источник]#

Получить маршрутизацию метаданных этого объекта.

Пожалуйста, проверьте Руководство пользователя о том, как работает механизм маршрутизации.

Возвращает:
маршрутизацияMetadataRequest

A MetadataRequest Инкапсуляция информации о маршрутизации.

get_n_splits(X=None, y=None, группы=None)[источник]#

Возвращает количество итераций разделения, установленное с помощью n_splits param при создании кросс-валидатора.

Параметры:
Xмассивоподобный объект формы (n_samples, n_features), по умолчанию=None

Всегда игнорируется, существует для совместимости API.

yarray-like формы (n_samples,), по умолчанию=None

Всегда игнорируется, существует для совместимости API.

группыarray-like формы (n_samples,), по умолчанию=None

Всегда игнорируется, существует для совместимости API.

Возвращает:
n_splitsint

Возвращает количество итераций разделения в кросс-валидаторе.

split(X, y, группы=None)[источник]#

Сгенерировать индексы для разделения данных на обучающую и тестовую выборки.

Параметры:
Xarray-like формы (n_samples, n_features)

Обучающие данные, где n_samples это количество образцов и n_features это количество признаков.

Обратите внимание, что предоставление y достаточно для генерации разбиений и, следовательно, np.zeros(n_samples) может использоваться в качестве заполнителя для X вместо фактических обучающих данных.

yarray-like формы (n_samples,)

Целевая переменная для задач обучения с учителем. Стратификация выполняется на основе меток y.

группыarray-like формы (n_samples,), по умолчанию=None

Всегда игнорируется, существует для совместимости API.

Возвращает:
обучатьndarray

Индексы обучающей выборки для этого разбиения.

тестndarray

Индексы тестового набора для этого разбиения.

Примечания

Рандомизированные сплиттеры CV могут возвращать разные результаты для каждого вызова split. Вы можете сделать результаты идентичными, установив random_state в целое число.