Spec-Zone.ru › scikit-learn

power_transform

sklearn.preprocessing.power_transform(X, method='yeo-johnson', *, standardize=True, copy=True)[source]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

PowerTransformer

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

quantile_transform

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

Примечания

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

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

Ссылки

[1]

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

[2]

G.E.P. Box и D.R. Cox, “An Analysis of Transformations”, 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–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.preprocessing.power_transform.html

Spec-Zone.ru

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