RobustScaler#
- class sklearn.preprocessing.RobustScaler(*, with_centering=True, with_scaling=True, quantile_range=(25.0, 75.0), copy=True, unit_variance=False)[源码]#
使用对异常值具有鲁棒性的统计数据对特征进行缩放。
这个缩放器通过移除中位数并根据分位数范围(默认为 IQR:四分位距)来缩放数据。IQR 是第 1 四分位数(25% 分位数)和第 3 四分位数(75% 分位数)之间的范围。
居中和缩放操作是针对每个特征独立进行的,通过计算训练集中样本的相关统计数据。中位数和四分位距随后被存储起来,以便使用
transform
方法应用于后续数据。数据集的标准化是许多机器学习估计器的常见预处理步骤。通常,这是通过移除均值并缩放到单位方差来完成的。然而,异常值常常会对样本均值/方差产生负面影响。在这种情况下,使用中位数和四分位距通常会得到更好的结果。有关示例可视化以及与其他缩放器的比较,请参阅 将 RobustScaler 与其他缩放器进行比较。
0.17 版本新增。
更多内容请参阅 用户指南。
- 参数:
- with_centering布尔型, 默认为 True
如果为
True
,则在缩放前将数据居中。这会导致transform
在稀疏矩阵上尝试时引发异常,因为居中操作需要构建一个密集矩阵,这在常见用例中可能会过大而无法容纳在内存中。- with_scaling布尔型, 默认为 True
如果为
True
,则将数据缩放到四分位距。- quantile_range元组 (q_min, q_max), 0.0 < q_min < q_max < 100.0, 默认为 (25.0, 75.0)
用于计算
scale_
的分位数范围。默认情况下,这等于 IQR,即q_min
是第一分位数,q_max
是第三分位数。0.18 版本新增。
- copy布尔型, 默认为 True
如果为
False
,则尝试避免复制并进行原地缩放。这不保证总是能原地工作;例如,如果数据不是 NumPy 数组或 scipy.sparse CSR 矩阵,仍可能返回一个副本。- unit_variance布尔型, 默认为 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=None)[源码]#
计算用于缩放的中位数和分位数。
- 参数:
- X形状为 (n_samples, n_features) 的 {array-like, 稀疏矩阵}
用于计算中位数和分位数的数据,这些数据将用于后续沿特征轴的缩放。
- y被忽略
未使用,根据约定此处存在是为了保持 API 一致性。
- 返回:
- self对象
已拟合的缩放器。
- fit_transform(X, y=None, **fit_params)[源码]#
拟合数据,然后进行转换。
使用可选参数
fit_params
将转换器拟合到X
和y
,并返回X
的转换版本。- 参数:
- X形状为 (n_samples, n_features) 的 array-like
输入样本。
- y形状为 (n_samples,) 或 (n_samples, n_outputs) 的 array-like, 默认为 None
目标值(无监督转换时为 None)。
- **fit_params字典
额外的拟合参数。
- 返回:
- X_new形状为 (n_samples, n_features_new) 的 ndarray 数组
转换后的数组。
- get_feature_names_out(input_features=None)[源码]#
获取转换后的输出特征名称。
- 参数:
- input_features字符串的 array-like 或 None, 默认为 None
输入特征。
如果
input_features
为None
,则使用feature_names_in_
作为输入特征名称。如果feature_names_in_
未定义,则生成以下输入特征名称:["x0", "x1", ..., "x(n_features_in_ - 1)"]
。如果
input_features
是 array-like,则当feature_names_in_
定义时,input_features
必须与feature_names_in_
匹配。
- 返回:
- feature_names_out字符串对象的 ndarray
与输入特征相同。
- get_metadata_routing()[源码]#
获取此对象的元数据路由。
请查阅 用户指南 以了解路由机制的工作原理。
- 返回:
- routingMetadataRequest
一个封装路由信息的
MetadataRequest
。
- get_params(deep=True)[源码]#
获取此估计器的参数。
- 参数:
- deep布尔型, 默认为 True
如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。
- 返回:
- params字典
参数名称及其对应的值。
- inverse_transform(X)[源码]#
将数据缩放回原始表示。
- 参数:
- X形状为 (n_samples, n_features) 的 {array-like, 稀疏矩阵}
用于转换回的重缩放数据。
- 返回:
- X_original形状为 (n_samples, n_features) 的 {ndarray, 稀疏矩阵}
转换后的数组。
- set_output(*, transform=None)[源码]#
设置输出容器。
有关如何使用此 API 的示例,请参阅 介绍 set_output API。
- 参数:
- transform{“default”, “pandas”, “polars”}, 默认为 None
配置
transform
和fit_transform
的输出。"default"
: 转换器的默认输出格式"pandas"
: DataFrame 输出"polars"
: Polars 输出None
: 转换配置不变
1.4 版本新增: 新增了
"polars"
选项。
- 返回:
- self估计器实例
估计器实例。