StratifiedGroupKFold#

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

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

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

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

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

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

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

Примечание

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

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

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

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

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

random_stateint или экземпляр RandomState, default=None

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

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

StratifiedKFold

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

GroupKFold

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

Примечания

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

  • Имитировать поведение StratifiedKFold насколько возможно для тривиальных групп (например, когда каждая группа содержит только один образец).

  • Быть инвариантным к меткам классов: перемаркировка y = ["Happy", "Sad"] to 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]
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

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

set_split_request(*, группы: 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.

Параметры:
группыstr, True, False или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

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

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

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

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

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

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

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

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

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

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

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

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

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

тестndarray

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