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