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形状为 (n_sample, n_features) 的 {array-like, 稀疏矩阵}
要进行中心化和缩放的数据。
- axisint, 默认值为0
用于计算中位数和IQR的轴。如果为 0,则独立缩放每个特征;否则(如果为 1),则缩放每个样本。
- with_centeringbool, 默认值为True
如果为
True
,则在缩放前对数据进行中心化。- with_scalingbool, 默认值为True
如果为
True
,则将数据缩放到单位方差(或等效地,单位标准差)。- quantile_rangetuple (q_min, q_max), 0.0 < q_min < q_max < 100.0, 默认值为(25.0, 75.0)
用于计算
scale_
的分位数范围。默认情况下,这等于IQR,即q_min
是第一四分位数,q_max
是第三四分位数。0.18 版本新增。
- copybool, 默认值为True
如果为False,则尝试避免复制并原地缩放。这不保证总是原地操作;例如,如果数据是具有整数数据类型的numpy数组,即使copy=False,也会返回一个副本。
- unit_variancebool, 默认值为False
如果为
True
,则缩放数据,使得正态分布的特征方差为 1。通常,如果标准正态分布的q_max
和q_min
的x值之差大于 1,则数据集将被缩小。如果小于 1,则数据集将被放大。0.24 版本新增。
- 返回:
- X_tr形状为 (n_samples, n_features) 的 {ndarray, 稀疏矩阵}
转换后的数据。
另请参阅
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. ]])