稳健缩放#

sklearn.preprocessing.robust_scale(X, *, axis=0, with_centering=True, with_scaling=True, quantile_range=(25.0, 75.0), copy=True, unit_variance=False)[source]#

沿任何轴标准化数据集。

中心化为中位数,并根据四分位数间距进行分量级缩放。

更多信息请阅读 用户指南

参数:
X形状为 (n_sample, n_features) 的 {array-like, sparse matrix}

要进行中心化和缩放的数据。

axisint, default=0

用于沿其计算中位数和IQR的轴。如果为0,则独立缩放每个特征;否则(如果为1),则缩放每个样本。

with_centeringbool, default=True

如果为 True,则在缩放之前对数据进行中心化。

with_scalingbool, default=True

如果为 True,则将数据缩放为单位方差(或等效地,单位标准差)。

quantile_rangetuple (q_min, q_max), 0.0 < q_min < q_max < 100.0, default=(25.0, 75.0)

用于计算 scale_ 的分位数范围。默认情况下,这等于IQR,即 q_min 是第一分位数,q_max 是第三分位数。

0.18版本新增。

copybool, default=True

如果为 False,则尝试避免就地复制和缩放。但这不能保证总是就地工作;例如,如果数据是具有 int dtype 的 numpy 数组,即使 copy=False,也会返回副本。

unit_variance布尔值,默认为 False

如果为True,则缩放数据,以便正态分布特征的方差为 1。一般来说,如果标准正态分布的q_maxq_min的 x 值之差大于 1,则数据集将被缩小。如果小于 1,则数据集将被放大。

0.24 版本中添加。

返回:
X_tr形状为 (n_samples, n_features) 的 {ndarray,稀疏矩阵}

转换后的数据。

另请参见

稳健缩放器

使用 Transformer API 执行居中和缩放(例如,作为预处理Pipeline的一部分)。

备注

此实现将拒绝居中 scipy.sparse 矩阵,因为它会使它们变得非稀疏,并可能导致程序因内存耗尽而崩溃。

相反,调用者应显式设置with_centering=False(在这种情况下,仅对 CSR 矩阵的特征执行方差缩放)或调用X.toarray()(如果他/她期望物化的稠密数组适合内存)。

为了避免内存复制,调用者应该传递一个 CSR 矩阵。

有关不同缩放器、转换器和归一化器的比较,请参见:比较不同缩放器对异常值数据的影響

警告

数据泄露的风险

除非您知道自己在做什么,否则请不要使用robust_scale。一个常见的错误是在拆分为训练集和测试集之前将其应用于整个数据。这将使模型评估产生偏差,因为信息会从测试集泄漏到训练集。一般来说,我们建议在Pipeline中使用RobustScaler以防止大多数数据泄漏风险:pipe = make_pipeline(RobustScaler(), LogisticRegression())

示例

>>> from sklearn.preprocessing import robust_scale
>>> X = [[-2, 1, 2], [-1, 0, 1]]
>>> robust_scale(X, axis=0)  # scale each column independently
array([[-1.,  1.,  1.],
       [ 1., -1., -1.]])
>>> robust_scale(X, axis=1)  # scale each row independently
array([[-1.5,  0. ,  0.5],
       [-1. ,  0. ,  1. ]])