ray.data.预处理器.序数编码器#
- class ray.data.preprocessors.OrdinalEncoder(columns: List[str], *, encode_lists: bool = True)[源代码]#
基类:
Preprocessor
将列中的值编码为有序的整数值。
OrdinalEncoder
将分类特征编码为从 \(0\) 到 \(n - 1\) 的整数,其中 \(n\) 是类别的数量。如果你转换一个未在拟合数据集中出现的值,那么该值将被编码为
float("nan")
。列必须包含可哈希值或可哈希值的列表。此外,同一列中不能同时包含标量和列表。
示例
使用
OrdinalEncoder
将分类特征编码为整数。>>> import pandas as pd >>> import ray >>> from ray.data.preprocessors import OrdinalEncoder >>> df = pd.DataFrame({ ... "sex": ["male", "female", "male", "female"], ... "level": ["L4", "L5", "L3", "L4"], ... }) >>> ds = ray.data.from_pandas(df) >>> encoder = OrdinalEncoder(columns=["sex", "level"]) >>> encoder.fit_transform(ds).to_pandas() sex level 0 1 1 1 0 2 2 1 0 3 0 1
如果你转换的值在原始数据集中不存在,那么该值将被编码为
float("nan")
。>>> df = pd.DataFrame({"sex": ["female"], "level": ["L6"]}) >>> ds = ray.data.from_pandas(df) >>> encoder.transform(ds).to_pandas() sex level 0 0 NaN
OrdinalEncoder
也可以对列表中的类别进行编码。>>> df = pd.DataFrame({ ... "name": ["Shaolin Soccer", "Moana", "The Smartest Guys in the Room"], ... "genre": [ ... ["comedy", "action", "sports"], ... ["animation", "comedy", "action"], ... ["documentary"], ... ], ... }) >>> ds = ray.data.from_pandas(df) >>> encoder = OrdinalEncoder(columns=["genre"]) >>> encoder.fit_transform(ds).to_pandas() name genre 0 Shaolin Soccer [2, 0, 4] 1 Moana [1, 2, 0] 2 The Smartest Guys in the Room [3]
- 参数:
columns – 要单独编码的列。
encode_lists – 如果
True
,编码列表元素。如果False
,编码整个列表(即,用一个整数替换每个列表)。默认为True
。
参见
OneHotEncoder
另一个用于编码分类数据的预处理器。
PublicAPI (alpha): 此API处于alpha阶段,可能在稳定之前发生变化。
方法
加载通过
self.serialize()
序列化的原始预处理器。将此预处理器适配到数据集。
将此预处理器适配到数据集,然后转换数据集。
批处理格式提示上游生产者尝试生成最佳块格式。
返回此预处理器的字符串序列化表示。
转换给定的数据集。
转换单个批次的数据。