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_max
和q_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. ]])