quantile_transform
- sklearn.preprocessing.quantile_transform(X, *, axis=0, n_quantiles=1000, output_distribution='uniform', ignore_implicit_zeros=False, subsample=100000, random_state=None, copy=True)[исходный код]
-
Преобразует признаки с использованием информации о квантилях.
Этот метод преобразует признаки так, чтобы они следовали равномерному или нормальному распределению. Поэтому для заданного признака это преобразование стремится распределить наиболее часто встречающиеся значения. Оно также уменьшает влияние (маргинальных) выбросов, поэтому является устойчивым методом предобработки.
Преобразование применяется независимо к каждому признаку. Сначала оценка функции распределения признака используется для отображения исходных значений в равномерное распределение. Затем полученные значения отображаются в требуемое выходное распределение с использованием соответствующей квантильной функции. Значения признаков новых или ранее не встречавшихся данных, выходящие за пределы обученного диапазона, будут отображены на границы выходного распределения. Обратите внимание, что это нелинейное преобразование. Оно может искажать линейные корреляции между переменными, измеренными в одинаковом масштабе, но делает переменные, измеренные в разных масштабах, более непосредственно сопоставимыми.
Подробнее см. в руководстве пользователя.
- Параметры:
-
- X{массивоподобный объект, разреженная матрица} формы (n_samples, n_features)
-
Данные для преобразования.
- axisint, по умолчанию=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, по умолчанию=1e5
-
Максимальное количество образцов, используемых для оценки квантилей, в целях повышения вычислительной эффективности. Обратите внимание, что процедура подвыборки может различаться для разреженных и плотных матриц с одинаковыми значениями. Отключите подвыборку, задав
subsample=None.Добавлено в версии 1.5: Добавлен параметр
Noneдля отключения подвыборки. - random_stateint, экземпляр RandomState или None, по умолчанию=None
-
Определяет генерацию случайных чисел для подвыборки и сглаживающего шума. Подробнее см.
subsample. Передайте значение int, чтобы получать воспроизводимые результаты при нескольких вызовах функции. См. глоссарий. - copybool, по умолчанию=True
-
Если значение равно False, пытается избежать создания копии и выполнить преобразование на месте. Это не всегда гарантируется; например, если данные представлены массивом numpy с целочисленным типом dtype, будет возвращена копия даже при copy=False.
Изменено в версии 0.23: В версии 0.23 значение параметра
copyпо умолчанию изменено с False на True.
- Возвращает:
-
- Xt{ndarray, разреженная матрица} формы (n_samples, n_features)
-
Преобразованные данные.
См. также
QuantileTransformer-
Выполняет масштабирование на основе квантилей с использованием API преобразователей (например, в составе конвейера предобработки
Pipeline). power_transform-
Преобразует данные к нормальному распределению с помощью степенного преобразования.
scale-
Выполняет стандартизацию быстрее, но она менее устойчива к выбросам.
robust_scale-
Выполняет устойчивую стандартизацию, устраняющую влияние выбросов, но не приводит выбросы и нормальные значения к одному масштабу.
Примечания
NaN обрабатываются как пропущенные значения: не учитываются при обучении и сохраняются при преобразовании.
Предупреждение
Риск утечки данных
Не используйте
quantile_transform, если не уверены в том, что делаете. Частая ошибка — применить преобразование ко всему набору данных до разделения на обучающую и тестовую выборки. Это приведёт к смещённой оценке модели, поскольку информация из тестовой выборки просочится в обучающую. В целом мы рекомендуем использоватьQuantileTransformerвнутри конвейера, чтобы предотвратить большинство рисков утечки данных: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([...])
Примеры из галереи
© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.preprocessing.quantile_transform.html