robust_scale#

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{array-like, sparse matrix} of shape (n_sample, n_features)

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

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 新增。

copy布尔值, 默认为 True

如果为 False,则尝试避免复制并将数据就地缩放。这不能保证始终可以就地完成;例如,如果数据是具有 int 数据类型的 numpy 数组,则即使 copy=False 也会返回副本。

unit_variancebool, default=False

如果为 True,则缩放数据使得服从正态分布的特征具有 1 的方差。通常,如果标准正态分布的 q_maxq_min 的 x 值之差大于 1,则数据集将被缩小;如果小于 1,则数据集将被放大。

0.24 版本新增。

返回:
X_tr{ndarray, sparse matrix} of shape (n_samples, n_features)

转换后的数据。

另请参阅

RobustScaler

使用 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. ]])