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"]toy = [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_splitsparam при создании кросс-валидатора.- Параметры:
- 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
Индексы тестового набора для этого разбиения.
Примеры галереи#
Визуализация поведения кросс-валидации в scikit-learn