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)#

标准化一个数据集沿着任何轴。

中心化到中位数,并根据四分位距进行分量尺度缩放。

更多信息请参阅 用户指南

Parameters:
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 是第三分位数。

Added in version 0.18.

copybool, default=True

如果为False,尝试避免复制并就地缩放。这不保证总是就地工作;例如,如果数据是一个int类型的numpy数组,即使copy=False也会返回一个副本。

unit_variancebool, default=False

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

Added in version 0.24.

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

变换后的数据。

See also

RobustScaler

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

Notes

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

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

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

有关不同缩放器、变换器和规范化器的比较,请参见 比较不同缩放器对含有异常值的数据的影响

Warning

数据泄露风险

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

Examples

>>> from sklearn.preprocessing import robust_scale
>>> X = [[-2, 1, 2], [-1, 0, 1]]
>>> robust_scale(X, axis=0)  # 独立缩放每一列
array([[-1.,  1.,  1.],
       [ 1., -1., -1.]])
>>> robust_scale(X, axis=1)  # 独立缩放每一行
array([[-1.5,  0. ,  0.5],
       [-1. ,  0. ,  1. ]])