power_transform#

sklearn.preprocessing.power_transform(X, метод='yeo-johnson', *, стандартизировать=True, copy=True)[источник]#

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

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

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

Box-Cox требует, чтобы входные данные были строго положительными, в то время как Yeo-Johnson поддерживает как положительные, так и отрицательные данные.

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

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

Параметры:
Xarray-like формы (n_samples, n_features)

Данные для преобразования с использованием степенного преобразования.

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

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

  • 'yeo-johnson' [1], работает с положительными и отрицательными значениями

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

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

стандартизироватьbool, по умолчанию=True

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

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

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

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

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

Смотрите также

PowerTransformer

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

quantile_transform

Преобразует данные в стандартное нормальное распределение с параметром output_distribution='normal'.

Примечания

NaN обрабатываются как пропущенные значения: игнорируются при fit, и поддерживается в transform.

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

Ссылки

[1]

I.K. Yeo и R.A. Johnson, "A new family of power transformations to improve normality or symmetry." Biometrika, 87(4), стр.954-959, (2000).

[2]

G.E.P. Box и D.R. Cox, "Анализ преобразований", Журнал Королевского статистического общества 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 внутри Pipeline чтобы предотвратить большинство рисков утечки данных, например: pipe = make_pipeline(PowerTransformer(), LogisticRegression()).