ray.data.预处理器.Normalizer#
- class ray.data.preprocessors.Normalizer(columns: List[str], norm='l2')[源代码]#
基类:
Preprocessor将每个样本缩放到单位范数。
这个预处理器通过将每个样本(即行)除以样本的范数来工作。一般公式如下:
\[s' = \frac{s}{\lVert s \rVert_p}\]其中 \(s\) 是样本,\(s'\) 是变换后的样本,:math:lVert s rVert`,以及 \(p\) 是范数类型。
支持以下规范:
“l1”(\(L^1\)):绝对值的和。"l2"(\(L^2\)): 平方值之和的平方根。"max"(\(L^\infty\)):最大值。
示例
>>> import pandas as pd >>> import ray >>> from ray.data.preprocessors import Normalizer >>> >>> df = pd.DataFrame({"X1": [1, 1], "X2": [1, 0], "X3": [0, 1]}) >>> ds = ray.data.from_pandas(df) >>> ds.to_pandas() X1 X2 X3 0 1 1 0 1 1 0 1
第一个样本的 \(L^2\)-范数是 \(\sqrt{2}\),第二个样本的 \(L^2\)-范数是 \(1\)。
>>> preprocessor = Normalizer(columns=["X1", "X2"]) >>> preprocessor.fit_transform(ds).to_pandas() X1 X2 X3 0 0.707107 0.707107 0 1 1.000000 0.000000 1
第一个样本的 \(L^1\)-范数是 \(2\),第二个样本的 \(L^1\)-范数是 \(1\)。
>>> preprocessor = Normalizer(columns=["X1", "X2"], norm="l1") >>> preprocessor.fit_transform(ds).to_pandas() X1 X2 X3 0 0.5 0.5 0 1 1.0 0.0 1
两组样本的 \(L^\infty\) 范数均为 \(1\)。
>>> preprocessor = Normalizer(columns=["X1", "X2"], norm="max") >>> preprocessor.fit_transform(ds).to_pandas() X1 X2 X3 0 1.0 1.0 0 1 1.0 0.0 1
- 参数:
columns – 要缩放的列。对于每一行,这些列被缩放到单位范数。
norm – 使用的范数。支持的值为
"l1"、"l2"或"max"。默认为"l2"。
- 抛出:
ValueError – 如果
norm不是"l1"、"l2"或"max"。
PublicAPI (alpha): 此API处于alpha阶段,可能在稳定之前发生变化。
方法
加载通过
self.serialize()序列化的原始预处理器。将此预处理器适配到数据集。
将此预处理器适配到数据集,然后转换数据集。
批处理格式提示上游生产者尝试生成最佳块格式。
返回此预处理器的字符串序列化表示。
转换给定的数据集。
转换单个批次的数据。