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целое число.
Примеры из галереи
© 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