Spec-Zone.ru › scikit-learn

power_transform

sklearn.preprocessing.power_transform(X, method='yeo-johnson', *, standardize=True, copy=True)[исходный код]

Параметрическое монотонное преобразование для придания данным более гауссовского вида.

Степенные преобразования — это семейство параметрических монотонных преобразований, применяемых для придания данным более гауссовского вида. Это полезно при моделировании проблем, связанных с гетероскедастичностью (непостоянной дисперсией), а также в других ситуациях, когда желательно нормальное распределение.

В настоящее время power_transform поддерживает преобразования Бокса — Кокса и Йео — Джонсона. Оптимальный параметр для стабилизации дисперсии и минимизации асимметрии оценивается методом максимального правдоподобия.

Для преобразования Бокса — Кокса входные данные должны быть строго положительными, тогда как преобразование Йео — Джонсона поддерживает как положительные, так и отрицательные данные.

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

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

Параметры:
Xмассивоподобный объект формы (n_samples, n_features)

Данные, которые требуется преобразовать с помощью степенного преобразования.

method{‘yeo-johnson’, ‘box-cox’}, по умолчанию=’yeo-johnson’

Метод степенного преобразования. Доступны следующие методы:

  • ‘yeo-johnson’ [1], работает с положительными и отрицательными значениями
  • ‘box-cox’ [2], работает только со строго положительными значениями

Изменено в версии 0.23: В версии 0.23 значение параметра method по умолчанию изменено с ‘box-cox’ на ‘yeo-johnson’.

standardizebool, по умолчанию=True

Установите значение True, чтобы применить к преобразованному результату нормализацию с нулевым средним и единичной дисперсией.

copybool, по умолчанию=True

Если False, попытаться избежать создания копии и выполнить преобразование на месте. Это не гарантирует, что операция всегда будет выполнена на месте; например, если данные являются массивом numpy с целочисленным типом dtype, будет возвращена копия даже при copy=False.

Возвращает:
X_transndarray формы (n_samples, n_features)

Преобразованные данные.

См. также

PowerTransformer

Эквивалентное преобразование с использованием API Transformer (например, как часть конвейера предварительной обработки Pipeline).

quantile_transform

Отображает данные на стандартное нормальное распределение с параметром output_distribution='normal'.

Примечания

Значения NaN рассматриваются как пропущенные: игнорируются в fit и сохраняются в transform.

Сравнение различных средств масштабирования, преобразователей и нормализаторов см. в разделе: Сравнение влияния различных средств масштабирования на данные с выбросами.

Ссылки

[1]

I.K. Yeo и R.A. Johnson, «Новое семейство степенных преобразований для улучшения нормальности или симметрии». Biometrika, 87(4), с. 954–959, (2000).

[2]

G.E.P. Box и D.R. Cox, «Анализ преобразований», Journal of the Royal Statistical Society B, 26, 211–252 (1964).

Примеры

>>> import numpy as np
>>> from sklearn.preprocessing import power_transform
>>> data = [[1, 2], [3, 2], [4, 5]]
>>> print(power_transform(data, method='box-cox'))
[[-1.332 -0.707]
 [ 0.256 -0.707]
 [ 1.076  1.414]]

Предупреждение

Риск утечки данных. Не используйте power_transform, если не знаете, что делаете. Распространённая ошибка — применить это преобразование ко всему набору данных до разделения на обучающую и тестовую выборки. Это приведёт к смещённой оценке модели, поскольку информация из тестовой выборки попадёт в обучающую. В целом мы рекомендуем использовать PowerTransformer внутри конвейера, чтобы предотвратить большинство рисков утечки данных, например: pipe = make_pipeline(PowerTransformer(), LogisticRegression()).

© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.preprocessing.power_transform.html

Spec-Zone.ru

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