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([...])
Примеры галереи#
Эффект преобразования целей в регрессионной модели