dask_ml.preprocessing.RobustScaler
dask_ml.preprocessing
.RobustScaler¶
- class dask_ml.preprocessing.RobustScaler(*, with_centering=True, with_scaling=True, quantile_range=(25.0, 75.0), copy=True, unit_variance=False)¶
使用对异常值具有鲁棒性的统计量来缩放特征。
这个缩放器去除中位数,并根据分位数范围(默认为 IQR:四分位距)缩放数据。IQR 是第一四分位数(25% 分位数)和第三四分位数(75% 分位数)之间的范围。
中心化和缩放分别独立应用于每个特征,通过计算训练集样本的相关统计量来实现。然后存储中位数和四分位距,以便后续数据使用
transform()
方法进行处理。数据集的标准化是许多机器学习估计器的常见预处理步骤。通常通过去除均值并缩放到单位方差来实现。然而,异常值通常会对样本的均值/方差产生负面影响。在这种情况下,使用中位数和四分位距通常能获得更好的结果。有关可视化示例以及与其他缩放器的比较,请参阅 Compare RobustScaler with other scalers。
0.17 版本新增。
在 User Guide 中阅读更多内容。
- 参数
- with_centeringbool, default=True
如果为 True,则在缩放前对数据进行中心化。当尝试对稀疏矩阵执行此操作时,
transform()
将引发异常,因为对其进行中心化涉及构建密集矩阵,在常见用例中这可能太大而无法放入内存。- 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,则尝试避免复制并进行原地缩放。这并不保证总是原地工作;例如,如果数据不是 NumPy 数组或 scipy.sparse CSR 矩阵,仍然可能会返回一个副本。
- unit_variancebool, default=False
如果为 True,则缩放数据,使正态分布特征的方差为 1。一般来说,如果标准正态分布的 q_max 和 q_min 对应的 x 值之差大于 1,则数据集将被缩小。如果小于 1,则数据集将被放大。
0.24 版本新增。
- 属性
另请参见
robust_scale
不带估计器 API 的等效函数。
sklearn.decomposition.PCA
通过 'whiten=True' 进一步去除特征间的线性相关性。
注意
https://en.wikipedia.org/wiki/Median https://en.wikipedia.org/wiki/Interquartile_range
示例
>>> from sklearn.preprocessing import RobustScaler >>> X = [[ 1., -2., 2.], ... [ -2., 1., 3.], ... [ 4., 1., -2.]] >>> transformer = RobustScaler().fit(X) >>> transformer RobustScaler() >>> transformer.transform(X) array([[ 0. , -2. , 0. ], [-1. , 0. , 0.4], [ 1. , 0. , -1.6]])
方法
fit
(X[, y])计算用于缩放的中位数和分位数。
fit_transform
(X[, y])拟合数据,然后转换。
get_feature_names_out
([input_features])获取转换后的输出特征名称。
get_metadata_routing
()获取此对象的元数据路由。
get_params
([deep])获取此估计器的参数。
inverse_transform
(X)将数据缩放回原始表示。
set_output
(*[, transform])设置输出容器。
set_params
(**params)设置此估计器的参数。
transform
(X)对数据进行中心化和缩放。
- __init__(*, with_centering=True, with_scaling=True, quantile_range=(25.0, 75.0), copy=True, unit_variance=False)¶