Spec-Zone.ru › scikit-learn

StratifiedGroupKFold

classsklearn.model_selection.StratifiedGroupKFold(n_splits=5, shuffle=False, random_state=None)[исходный код]

Вариант итератора стратифицированной K-блочной перекрёстной проверки по классам с непересекающимися группами.

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

Каждая группа ровно один раз войдёт в тестовый набор среди всех блоков (число различных групп должно быть не меньше числа блоков).

Различие между GroupKFold и StratifiedGroupKFold заключается в том, что первый алгоритм пытается создать сбалансированные блоки с примерно одинаковым числом различных групп в каждом блоке, тогда как StratifiedGroupKFold пытается сформировать блоки, максимально сохраняющие долю образцов каждого класса при условии непересечения групп между разбиениями.

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

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

Примечание

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

Параметры:
n_splitsint, default=5

Число блоков. Должно быть не меньше 2.

shufflebool, default=False

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

random_stateint or RandomState instance, default=None

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

См. также

StratifiedKFold

Учитывает информацию о классах при формировании блоков, сохраняющих распределение классов (для задач бинарной или многоклассовой классификации).

GroupKFold

Вариант итератора K-блочной перекрёстной проверки с непересекающимися группами.

Примечания

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

  • Как можно точнее имитировать поведение StratifiedKFold для тривиальных групп (например, когда каждая группа содержит только один образец).
  • Быть инвариантной к меткам классов: переименование y = ["Happy", "Sad"] в y = [1, 0] не должно изменять генерируемые индексы.
  • Максимально стратифицировать образцы при соблюдении ограничения на непересечение групп. Это означает, что в некоторых случаях, когда небольшое число групп содержит большое число образцов, стратификация будет невозможна и поведение будет близко к GroupKFold.

Примеры

>>> import numpy as np
>>> from sklearn.model_selection import StratifiedGroupKFold
>>> X = np.ones((17, 2))
>>> y = np.array([0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0])
>>> groups = np.array([1, 1, 2, 2, 3, 3, 3, 4, 5, 5, 5, 5, 6, 6, 7, 8, 8])
>>> sgkf = StratifiedGroupKFold(n_splits=3)
>>> sgkf.get_n_splits()
3
>>> print(sgkf)
StratifiedGroupKFold(n_splits=3, random_state=None, shuffle=False)
>>> for i, (train_index, test_index) in enumerate(sgkf.split(X, y, groups)):
...     print(f"Fold {i}:")
...     print(f"  Train: index={train_index}")
...     print(f"         group={groups[train_index]}")
...     print(f"  Test:  index={test_index}")
...     print(f"         group={groups[test_index]}")
Fold 0:
  Train: index=[ 0  1  2  3  7  8  9 10 11 15 16]
         group=[1 1 2 2 4 5 5 5 5 8 8]
  Test:  index=[ 4  5  6 12 13 14]
         group=[3 3 3 6 6 7]
Fold 1:
  Train: index=[ 4  5  6  7  8  9 10 11 12 13 14]
         group=[3 3 3 4 5 5 5 5 6 6 7]
  Test:  index=[ 0  1  2  3 15 16]
         group=[1 1 2 2 8 8]
Fold 2:
  Train: index=[ 0  1  2  3  4  5  6 12 13 14 15 16]
         group=[1 1 2 2 3 3 3 6 6 7 8 8]
  Test:  index=[ 7  8  9 10 11]
         group=[4 5 5 5 5]
get_metadata_routing()[исходный код]

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

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

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

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

get_n_splits(X=None, y=None, groups=None)[исходный код]

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

Параметры:
Xarray-like of shape (n_samples, n_features), default=None

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

yarray-like of shape (n_samples,), default=None

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

groupsarray-like of shape (n_samples,), default=None

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

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

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

set_split_request(*, groups:bool|None|str='$UNCHANGED$') → StratifiedGroupKFold[исходный код]

Настроить, следует ли запрашивать передачу метаданных методу split.

Обратите внимание, что этот метод актуален только в том случае, если данный оцениватель используется как подчинённый оцениватель внутри метаоценивателя, а маршрутизация метаданных включена с помощью enable_metadata_routing=True (см. sklearn.set_config). О том, как работает механизм маршрутизации, см. в руководстве пользователя.

Для каждого параметра доступны следующие варианты:

  • True: метаданные запрашиваются и передаются в split, если они предоставлены. Запрос игнорируется, если метаданные не предоставлены.
  • False: метаданные не запрашиваются, и метаоцениватель не передаёт их в split.
  • None: метаданные не запрашиваются, и метаоцениватель вызовет ошибку, если пользователь их предоставит.
  • str: метаданные следует передавать метаоценивателю под указанным псевдонимом вместо исходного имени.

Значение по умолчанию (sklearn.utils.metadata_routing.UNCHANGED) сохраняет текущий запрос. Это позволяет изменить запрос для некоторых параметров, не затрагивая остальные.

Добавлено в версии 1.3.

Параметры:
groupsstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для параметра groups в split.

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

Обновлённый объект.

split(X, y=None, groups=None)[исходный код]

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

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

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

yarray-like of shape (n_samples,), default=None

Целевая переменная для задач обучения с учителем.

groupsarray-like of shape (n_samples,), default=None

Метки групп образцов, используемые при разбиении набора данных на обучающую и тестовую выборки.

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

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

testndarray

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

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

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

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

Spec-Zone.ru

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