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阶段,可能在稳定之前发生变化。
方法
加载通过
self.serialize()
序列化的原始预处理器。将此预处理器适配到数据集。
将此预处理器适配到数据集,然后转换数据集。
批处理格式提示上游生产者尝试生成最佳块格式。
返回此预处理器的字符串序列化表示。
转换给定的数据集。
转换单个批次的数据。