Spec-Zone.ru › scikit-learn

permutation_test_score

sklearn.model_selection.permutation_test_score(estimator, X, y, *, groups=None, cv=None, n_permutations=100, n_jobs=None, random_state=0, verbose=0, scoring=None, fit_params=None, params=None)[source]

Оцените значимость перекрестно-валидированного результата с помощью перестановок.

Переставляет целевые значения, чтобы получить «случайные данные», и вычисляет эмпирическое значение p относительно нулевой гипотезы, что признаки и целевые значения независимы.

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

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

Параметры:
estimatorобъект оценщика, реализующий метод ‘fit’

Объект для обучения данных.

Xмассив-подобный объект с размерностью как минимум 2D

Обучающие данные.

yмассив-подобный объект формы (n_samples,) или (n_samples, n_outputs) или None

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

groupsмассив-подобный объект формы (n_samples,), по умолчанию=None

Метки для ограничения перестановок внутри групп, т.е. значения y переставляются среди образцов с одним и тем же идентификатором группы. Если не указано, значения y переставляются среди всех образцов.

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

Изменено в версии 1.6: groups может быть передан только в том случае, если маршрутизация метаданных не включена через sklearn.set_config(enable_metadata_routing=True). Если маршрутизация включена, передайте groups вместе с другими метаданными через аргумент params вместо этого. Например: permutation_test_score(..., params={'groups': groups}).

cvцелое число, генератор перекрестной проверки или итерируемый объект, по умолчанию=None

Определяет стратегию разделения набора данных для перекрестной проверки. Возможные входные данные для cv:

  • None, чтобы использовать стандартную 5-кратную перекрестную проверку,
  • целое число, чтобы указать количество сгибов в (Stratified)KFold,
  • разделитель для перекрестной проверки,
  • Итерируемый объект, возвращающий (train, test) разбиения в виде массивов индексов.

Для int/None входных данных, если оценщик является классификатором и y является либо двоичным, либо многоклассовым, используется StratifiedKFold. Во всех остальных случаях используется KFold. Эти разделители инициализируются shuffle=False, поэтому разбиения будут одинаковыми при каждом вызове.

См. Руководство пользователя для различных стратегий перекрестной проверки, которые могут быть использованы здесь.

Изменено в версии 0.22: cv значение по умолчанию, если None изменилось с 3-кратной на 5-кратную перекрестную проверку.

n_permutationsцелое число, по умолчанию=100

Количество раз для перестановки y.

n_jobsцелое число, по умолчанию=None

Количество задач, выполняемых параллельно. Обучение оценщика и вычисление перекрестно-валидированного результата выполняются параллельно по всем перестановкам. None означает 1, за исключением контекста joblib.parallel_backend. -1 означает использование всех процессоров. См. Глоссарий для получения дополнительной информации.

random_stateцелое число, экземпляр RandomState или None, по умолчанию=0

Передайте целое число для воспроизводимых результатов для перестановки y значений среди образцов. См. Глоссарий.

verboseцелое число, по умолчанию=0

Уровень подробности.

scoringстрока или вызываемая функция, по умолчанию=None

Одиночная строка (см. Параметр scoring: определение правил оценки модели) или вызываемая функция (см. Вызываемые функции-оценщики) для оценки предсказаний на тестовой выборке.

Если None используется метод score оценщика.

fit_paramsсловарь, по умолчанию=None

Параметры, передаваемые в метод fit оценщика.

Устарело начиная с версии 1.6: Этот параметр устарел и будет удален в версии 1.6. Используйте params вместо него.

paramsсловарь, по умолчанию=None

Параметры, передаваемые в метод fit оценщика, оценщика и разделителя перекрестной проверки.

  • Если enable_metadata_routing=False (по умолчанию): параметры напрямую передаются в метод fit оценщика.
  • Если enable_metadata_routing=True: параметры безопасно маршрутизируются в метод fit оценщика, cv объект и scorer. См. Руководство пользователя по маршрутизации метаданных для получения дополнительной информации.

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

Возвращает:
scoreчисло с плавающей точкой

Истинное значение результата без перестановки целевых значений.

permutation_scoresмассив формы (n_permutations,)

Значения результатов, полученные для каждой перестановки.

pvalueчисло с плавающей точкой

Значение p, приближающее вероятность того, что результат будет получен случайно. Это вычисляется следующим образом:

(C + 1) / (n_permutations + 1)

Где C — количество перестановок, для которых результат >= истинного результата.

Наилучшее возможное значение p — 1/(n_permutations + 1), наихудшее — 1,0.

Примечания

Эта функция реализует тест 1 в:

Ojala и Garriga. Permutation Tests for Studying Classifier Performance. Журнал машинного обучения (2010) т. 11

Примеры

>>> from sklearn.datasets import make_classification
>>> from sklearn.linear_model import LogisticRegression
>>> from sklearn.model_selection import permutation_test_score
>>> X, y = make_classification(random_state=0)
>>> estimator = LogisticRegression()
>>> score, permutation_scores, pvalue = permutation_test_score(
...     estimator, X, y, random_state=0
... )
>>> print(f"Original Score: {score:.3f}")
Original Score: 0.810
>>> print(
...     f"Permutation Scores: {permutation_scores.mean():.3f} +/- "
...     f"{permutation_scores.std():.3f}"
... )
Permutation Scores: 0.505 +/- 0.057
>>> print(f"P-value: {pvalue:.3f}")
P-value: 0.010

Галерея примеров

Проверка с перестановками значимости результата классификации

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

Spec-Zone.ru

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