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阶段,可能在稳定之前发生变化。

方法

deserialize

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

fit

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

fit_transform

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

preferred_batch_format

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

serialize

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

transform

转换给定的数据集。

transform_batch

转换单个批次的数据。