ray.data.预处理器.均匀KBins离散化器#

class ray.data.preprocessors.UniformKBinsDiscretizer(columns: List[str], bins: int | Dict[str, int], *, right: bool = True, include_lowest: bool = False, duplicates: str = 'raise', dtypes: Dict[str, pandas.CategoricalDtype | Type[numpy.integer]] | None = None)[源代码]#

基类:_AbstractKBinsDiscretizer

将数值分入等宽的离散区间(箱)。

列必须包含数值。

示例

使用 UniformKBinsDiscretizer 对连续特征进行分箱。

>>> import pandas as pd
>>> import ray
>>> from ray.data.preprocessors import UniformKBinsDiscretizer
>>> df = pd.DataFrame({
...     "value_1": [0.2, 1.4, 2.5, 6.2, 9.7, 2.1],
...     "value_2": [10, 15, 13, 12, 23, 25],
... })
>>> ds = ray.data.from_pandas(df)
>>> discretizer = UniformKBinsDiscretizer(
...     columns=["value_1", "value_2"], bins=4
... )
>>> discretizer.fit_transform(ds).to_pandas()
   value_1  value_2
0        0        0
1        0        1
2        0        0
3        2        0
4        3        3
5        0        3

您还可以为每一列指定不同的箱数。

>>> discretizer = UniformKBinsDiscretizer(
...     columns=["value_1", "value_2"], bins={"value_1": 4, "value_2": 3}
... )
>>> discretizer.fit_transform(ds).to_pandas()
   value_1  value_2
0        0        0
1        0        0
2        0        0
3        2        0
4        3        2
5        0        2
参数:
  • columns – 要离散化的列。

  • bins – 定义等宽箱的数量。可以是一个整数(将应用于所有列),或者是一个将列映射到整数的字典。范围在每侧扩展0.1%以包括最小值和最大值。

  • right – 指示箱子是否包含最右边的边缘。

  • include_lowest – 第一个区间是否应为左闭区间。

  • duplicates – 可以是 ‘raise’ 或 ‘drop’。如果 bin 边缘不唯一,则引发 ValueError 或删除非唯一项。

  • dtypes – 一个可选的字典,将列映射到 pd.CategoricalDtype 对象或 np.integer 类型。如果你不在 dtypes 中包含某一列或将其指定为整数类型,输出的列将由对应于箱的顺序整数组成。如果你使用 pd.CategoricalDtype,输出的列将是一个 pd.CategoricalDtype,其类别被映射到箱。你可以使用 pd.CategoricalDtype(categories, ordered=True) 来保留关于箱顺序的信息。

参见

CustomKBinsDiscretizer

如果你想指定自己的 bin 边缘。

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

方法

deserialize

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

fit

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

fit_transform

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

preferred_batch_format

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

serialize

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

transform

转换给定的数据集。

transform_batch

转换单个批次的数据。