ray.data.预处理器.连接器#

class ray.data.preprocessors.Concatenator(output_column_name: str = 'concat_out', include: List[str] | None = None, exclude: str | List[str] | None = None, dtype: numpy.dtype | None = None, raise_if_missing: bool = False)[源代码]#

基类:Preprocessor

将数值列合并为一个 TensorDtype 类型的列。

此预处理器连接数值列并将结果存储在新列中。新列包含形状为 \((m,)\)TensorArrayElement 对象,其中 \(m\) 是连接的列数。连接后的 \(m\) 列在连接后被删除。

示例

>>> import numpy as np
>>> import pandas as pd
>>> import ray
>>> from ray.data.preprocessors import Concatenator

Concatenator 将数值列合并为一个 TensorDtype 列。

>>> df = pd.DataFrame({"X0": [0, 3, 1], "X1": [0.5, 0.2, 0.9]})
>>> ds = ray.data.from_pandas(df)  
>>> concatenator = Concatenator()
>>> concatenator.fit_transform(ds).to_pandas()  
   concat_out
0  [0.0, 0.5]
1  [3.0, 0.2]
2  [1.0, 0.9]

默认情况下,创建的列名为 "concat_out",但您可以指定不同的名称。

>>> concatenator = Concatenator(output_column_name="tensor")
>>> concatenator.fit_transform(ds).to_pandas()  
       tensor
0  [0.0, 0.5]
1  [3.0, 0.2]
2  [1.0, 0.9]

有时,您可能不想连接数据集中的所有列。在这种情况下,您可以使用 exclude 参数排除列。

>>> df = pd.DataFrame({"X0": [0, 3, 1], "X1": [0.5, 0.2, 0.9], "Y": ["blue", "orange", "blue"]})
>>> ds = ray.data.from_pandas(df)  
>>> concatenator = Concatenator(exclude=["Y"])
>>> concatenator.fit_transform(ds).to_pandas()  
        Y  concat_out
0    blue  [0.0, 0.5]
1  orange  [3.0, 0.2]
2    blue  [1.0, 0.9]

或者,您可以使用 include 参数指定要连接的列。

>>> concatenator = Concatenator(include=["X0", "X1"])
>>> concatenator.fit_transform(ds).to_pandas()  
        Y  concat_out
0    blue  [0.0, 0.5]
1  orange  [3.0, 0.2]
2    blue  [1.0, 0.9]

注意,如果一个列同时存在于 includeexclude 中,该列将被排除。

>>> concatenator = Concatenator(include=["X0", "X1", "Y"], exclude=["Y"])
>>> concatenator.fit_transform(ds).to_pandas()  
        Y  concat_out
0    blue  [0.0, 0.5]
1  orange  [3.0, 0.2]
2    blue  [1.0, 0.9]

默认情况下,连接的张量是输入列的公共 dtype 。然而,您也可以通过 dtype 参数显式设置 dtype

>>> concatenator = Concatenator(include=["X0", "X1"], dtype=np.float32)
>>> concatenator.fit_transform(ds)  
Dataset(num_rows=3, schema={Y: object, concat_out: TensorDtype(shape=(2,), dtype=float32)})
参数:
  • output_column_name – 新列的所需名称。默认为 "concat_out"

  • include – 要连接的列的列表。如果为 None ,则连接所有列。

  • exclude – 要从连接中排除的列的列表。如果某一列同时出现在 includeexclude 中,则该列将从连接中排除。

  • dtype – 要转换输出张量的 dtype。如果未指定,dtype 将根据标准强制转换规则确定。

  • raise_if_missing – 如果 True,如果 includeexclude 中的任何列不存在,则会引发错误。默认为 False

抛出:

ValueError – 如果 raise_if_missingTrue ,并且 includeexclude 中的某一列在数据集中不存在。

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

方法

deserialize

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

fit

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

fit_transform

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

preferred_batch_format

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

serialize

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

transform

转换给定的数据集。

transform_batch

转换单个批次的数据。