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
-
Индексы тестовой выборки для данного разбиения.
Примеры в галерее
© 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