quantile_transform#

sklearn.preprocessing.quantile_transform(X, *, ось=0, n_quantiles=1000, output_distribution='uniform', ignore_implicit_zeros=False, subsample=100000, random_state=None, copy=True)[источник]#

Преобразование признаков с использованием информации о квантилях.

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

Преобразование применяется к каждому признаку независимо. Сначала оценка функции распределения признака используется для отображения исходных значений в равномерное распределение. Затем полученные значения отображаются в желаемое выходное распределение с использованием соответствующей функции квантилей. Значения признаков новых/невидимых данных, которые находятся ниже или выше подобранного диапазона, будут отображены в границы выходного распределения. Обратите внимание, что это преобразование нелинейно. Оно может искажать линейные корреляции между переменными, измеренными в одной шкале, но делает переменные, измеренные в разных шкалах, более непосредственно сравнимыми.

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

Параметры:
X{array-like, sparse matrix} формы (n_samples, n_features)

Данные для преобразования.

осьint, по умолчанию=0

Ось, используемая для вычисления средних и стандартных отклонений. Если 0, преобразовать каждый признак, иначе (если 1) преобразовать каждую выборку.

n_quantilesint, по умолчанию=1000 или n_samples

Количество квантилей для вычисления. Соответствует количеству контрольных точек, используемых для дискретизации функции кумулятивного распределения. Если n_quantiles больше количества образцов, n_quantiles устанавливается равным количеству образцов, так как большее количество квантилей не дает лучшего приближения оценки функции кумулятивного распределения.

output_distribution{‘uniform’, ‘normal’}, по умолчанию=’uniform’

Маргинальное распределение для преобразованных данных. Варианты: 'uniform' (по умолчанию) или 'normal'.

ignore_implicit_zerosbool, по умолчанию=False

Применяется только к разреженным матрицам. Если True, разреженные элементы матрицы отбрасываются для вычисления статистик квантилей. Если False, эти элементы обрабатываются как нули.

subsampleint или None, default=1e5

Максимальное количество образцов, используемых для оценки квантилей для вычислительной эффективности. Обратите внимание, что процедура подвыборки может отличаться для разреженных и плотных матриц с одинаковыми значениями. Отключите подвыборку, установив subsample=None.

Добавлено в версии 1.5: Опция None для отключения субдискретизации был добавлен.

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

Определяет генерацию случайных чисел для субдискретизации и сглаживания шума. Пожалуйста, смотрите subsample для получения дополнительных деталей. Передайте int для воспроизводимых результатов при множественных вызовах функции. См. Глоссарий.

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

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

Изменено в версии 0.23: Значение по умолчанию для copy изменено с False на True в версии 0.23.

Возвращает:
Xt{ndarray, разреженная матрица} формы (n_samples, n_features)

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

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

QuantileTransformer

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

power_transform

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

scale

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

robust_scale

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

Примечания

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

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

Риск утечки данных

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

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

Примеры

>>> import numpy as np
>>> from sklearn.preprocessing import quantile_transform
>>> rng = np.random.RandomState(0)
>>> X = np.sort(rng.normal(loc=0.5, scale=0.25, size=(25, 1)), axis=0)
>>> quantile_transform(X, n_quantiles=10, random_state=0, copy=True)
array([...])