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, params=None)[source]

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

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

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

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

Параметры:
estimatorобъект оценивателя, реализующий «fit»

Объект, используемый для подгонки данных.

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

Данные для подгонки.

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 изменено с 3 фолдов на 5 фолдов, если None.

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

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

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

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

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

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

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

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

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

Метод оценки для вычисления качества прогнозов на проверочной выборке.

  • строка: возможные значения см. в разделе оцениватели, задаваемые строковым именем.
  • вызываемый объект: вызываемый объект-оцениватель (например, функция) с сигнатурой scorer(estimator, X, y), который должен возвращать только одно значение. Подробнее см. в разделе вызываемые оцениватели.
  • None: используется критерий оценки по умолчанию для estimator.
paramsсловарь, по умолчанию=None

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

  • Если 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. Перестановочные тесты для изучения качества классификатора. The Journal of Machine Learning Research (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–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.model_selection.permutation_test_score.html

Spec-Zone.ru

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