Spec-Zone.ru › scikit-learn

StratifiedKFold

classsklearn.model_selection.StratifiedKFold(n_splits=5, *, shuffle=False, random_state=None)[источник]

Кросс-валидатор K-Fold со стратификацией по классам.

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

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

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

Визуализацию поведения кросс-валидации и сравнение распространённых методов разделения scikit-learn см. в разделе Визуализация поведения кросс-валидации в scikit-learn

Примечание

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

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

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

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

shufflebool, по умолчанию=False

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

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

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

См. также

RepeatedStratifiedKFold

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

Примечания

Реализация разработана для того, чтобы:

  • Создавать тестовые выборки с одинаковым распределением классов или максимально близким к нему.
  • Не зависеть от меток классов: переименование y = ["Happy", "Sad"] в 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]
get_metadata_routing()[источник]

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

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

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

Объект MetadataRequest, содержащий сведения о маршрутизации.

get_n_splits(X=None, y=None, groups=None)[источник]

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

Параметры:
Xarray-like формы (n_samples, n_features), по умолчанию=None

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

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

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

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

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

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

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

split(X, y, groups=None)[источник]

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

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

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

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

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

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

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

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

Генерирует:
trainndarray

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

testndarray

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

Примечания

При каждом вызове split рандомизированные средства разбиения для кросс-валидации могут возвращать разные результаты. Чтобы результаты не менялись, задайте для random_state целое число.

Примеры из галереи

Рекурсивное исключение признаков с кросс-валидацией

Ковариации GMM

Визуализация поведения кросс-валидации в scikit-learn

Проверка статистической значимости оценки классификации с помощью перестановок

Рабочая характеристика приёмника (ROC) с кросс-валидацией

Влияние изменения порога на самообучение

© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.model_selection.StratifiedKFold.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API