ray.data.预处理器.自定义KBins离散器#
- class ray.data.preprocessors.CustomKBinsDiscretizer(columns: List[str], bins: Iterable[float] | pandas.IntervalIndex | Dict[str, Iterable[float] | pandas.IntervalIndex], *, right: bool = True, include_lowest: bool = False, duplicates: str = 'raise', dtypes: Dict[str, pandas.CategoricalDtype | Type[numpy.integer]] | None = None)[源代码]#
基类:
_AbstractKBinsDiscretizer
使用自定义的边界值将数据分箱到离散区间。
列必须包含数值。
示例
使用
CustomKBinsDiscretizer
来对连续特征进行分箱。>>> import pandas as pd >>> import ray >>> from ray.data.preprocessors import CustomKBinsDiscretizer >>> 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 = CustomKBinsDiscretizer( ... columns=["value_1", "value_2"], ... bins=[0, 1, 4, 10, 25] ... ) >>> discretizer.transform(ds).to_pandas() value_1 value_2 0 0 2 1 1 3 2 1 3 3 2 3 4 2 3 5 1 3
您还可以为每一列指定不同的 bin 边缘。
>>> discretizer = CustomKBinsDiscretizer( ... columns=["value_1", "value_2"], ... bins={"value_1": [0, 1, 4], "value_2": [0, 18, 35, 70]}, ... ) >>> discretizer.transform(ds).to_pandas() value_1 value_2 0 0.0 0 1 1.0 0 2 1.0 0 3 NaN 0 4 NaN 1 5 1.0 1
- 参数:
columns – 要离散化的列。
bins – 定义自定义的 bin 边缘。可以是数字的可迭代对象、
pd.IntervalIndex
或一个将列映射到其中任意一个的字典。注意,用于 bin 的pd.IntervalIndex
必须是互不重叠的。right – 指示箱子是否包含最右边的边缘。
include_lowest – 指示第一个区间是否应为左闭区间。
duplicates – 可以是 ‘raise’ 或 ‘drop’。如果 bin 边缘不唯一,则引发
ValueError
或删除非唯一项。dtypes – 一个可选的字典,将列映射到
pd.CategoricalDtype
对象或np.integer
类型。如果你不在dtypes
中包含某一列或将其指定为整数类型,输出的列将由对应于箱的顺序整数组成。如果你使用pd.CategoricalDtype
,输出的列将是一个pd.CategoricalDtype
,其类别被映射到箱。你可以使用pd.CategoricalDtype(categories, ordered=True)
来保留关于箱顺序的信息。
参见
UniformKBinsDiscretizer
如果你想将数据分到等宽的箱子中。
PublicAPI (alpha): 此API处于alpha阶段,可能在稳定之前发生变化。
方法
加载通过
self.serialize()
序列化的原始预处理器。将此预处理器适配到数据集。
将此预处理器适配到数据集,然后转换数据集。
批处理格式提示上游生产者尝试生成最佳块格式。
返回此预处理器的字符串序列化表示。
转换给定的数据集。
转换单个批次的数据。