sklearn.preprocessing.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 array-like, sparse matrix
要转换的数据。
axis int, (default=0)*
用于计算平均值和标准偏差的轴。如果为0,则变换每个特征,否则(如果为1)则变换每个样本。
n_quantiles int, optional (default=1000 or n_samples)
要计算的分位数。它对应于用于离散化累积分布函数的界标数。如果n_quantiles大于样本数,则将n_quantiles设置为样本数,因为较大的分位数不能够更好地近似累积分布函数估计量。
output_distribution str, optional (default=’uniform’)
转换后数据的边际分布。选择是“统一”(默认)或“正常”。
ignore_implicit_zeros bool, optional (default=False)
仅适用于稀疏矩阵。如果为True,则将丢弃矩阵的稀疏条目以计算分位数统计信息。如果为False,则将这些条目视为零。
subsample int, optional (default=1e5)
用于估计分位数以提高计算效率的最大样本数。注意,对于值相同的稀疏矩阵和密集矩阵,子采样过程可能有所不同。
random_state int, RandomState instance or None, optional (default=None)
确定用于二次采样和平滑噪声的随机数生成。请参阅子样本以获取更多详细信息。在多个函数调用之间传递int以获得可重复的结果。见词汇
copy boolean, optional, (default=True)
设置为False可以执行就地转换并避免复制(如果输入已经是一个numpy数组)。如果为True,将转换X的副本,而使原始X保持不变
..versionchanged:: 0.23
副本的默认值在0.23中从False更改为True。
返回 说明
Xt ndarray or sparse matrix, shape (n_samples, n_features)
转换后的数据。

另见:

QuantileTransformer

使用Transformer API(例如,作为预处理 sklearn.pipeline.Pipeline的一部分)执行基于分位数的缩放。

power_transform

使用幂变换将数据映射到正态分布。

scale

执行更快的标准化,但对异常值的鲁棒性较低。

robust_scale

执行鲁棒的标准化,以消除离群值的影响,但不会使离群值和离群值处于相同的规模。

注释

NaN被视为缺失值:忽略适合度,并保持变换值。

有关不同缩放器,转换器和规范化器的比较,请参阅examples/preprocessing/plot_all_scaling.py

示例

>>> 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=(251)), axis=0)
>>> quantile_transform(X, n_quantiles=10, random_state=0, copy=True)
array([...])

sklearn.preprocessing.quantile_transform使用示例