ray.data.预处理器.RobustScaler#

class ray.data.preprocessors.RobustScaler(columns: List[str], quantile_range: Tuple[float, float] = (0.25, 0.75))[源代码]#

基类:Preprocessor

使用分位数缩放和转换每一列。

一般公式由以下给出

\[x' = \frac{x - \mu_{1/2}}{\mu_h - \mu_l}\]

其中,\(x\) 是列,\(x'\) 是变换后的列,\(\mu_{1/2}\) 是列的中位数。\(\mu_{h}\)\(\mu_{l}\) 分别是高和低的分位数。默认情况下,\(\mu_{h}\) 是第三四分位数,\(\mu_{l}\) 是第一四分位数。

小技巧

当您的数据包含许多异常值时,此缩放器工作良好。

示例

>>> import pandas as pd
>>> import ray
>>> from ray.data.preprocessors import RobustScaler
>>>
>>> df = pd.DataFrame({
...     "X1": [1, 2, 3, 4, 5],
...     "X2": [13, 5, 14, 2, 8],
...     "X3": [1, 2, 2, 2, 3],
... })
>>> ds = ray.data.from_pandas(df)  
>>> ds.to_pandas()  
   X1  X2  X3
0   1  13   1
1   2   5   2
2   3  14   2
3   4   2   2
4   5   8   3

RobustScaler 分别缩放每一列。

>>> preprocessor = RobustScaler(columns=["X1", "X2"])
>>> preprocessor.fit_transform(ds).to_pandas()  
    X1     X2  X3
0 -1.0  0.625   1
1 -0.5 -0.375   2
2  0.0  0.750   2
3  0.5 -0.750   2
4  1.0  0.000   3
参数:
  • columns – 要单独缩放的列。

  • quantile_range – 定义下限和上限分位数的元组。值必须在0到1之间。默认值为第1和第3四分位数:(0.25, 0.75)

PublicAPI (alpha): 此API处于alpha阶段,可能在稳定之前发生变化。

方法

deserialize

加载通过 self.serialize() 序列化的原始预处理器。

fit

将此预处理器适配到数据集。

fit_transform

将此预处理器适配到数据集,然后转换数据集。

preferred_batch_format

批处理格式提示上游生产者尝试生成最佳块格式。

serialize

返回此预处理器的字符串序列化表示。

transform

转换给定的数据集。

transform_batch

转换单个批次的数据。