ray.data.预处理器.OneHotEncoder#

class ray.data.preprocessors.OneHotEncoder(columns: List[str], *, max_categories: Dict[str, int] | None = None)[源代码]#

基类:Preprocessor

独热编码 分类数据。

此预处理器为 {column} 中的每个唯一 {category} 创建一个名为 {column}_{category} 的列。如果类别匹配,则列的值为 1,否则为 0。

如果你编码一个不常见的类别(见 max_categories)或一个不在拟合数据集中的类别,那么该类别将被编码为全0。

列必须包含可哈希对象或可哈希对象的列表。

备注

列表被视为类别。如果你想编码单个列表元素,请使用 MultiHotEncoder

示例

>>> import pandas as pd
>>> import ray
>>> from ray.data.preprocessors import OneHotEncoder
>>>
>>> df = pd.DataFrame({"color": ["red", "green", "red", "red", "blue", "green"]})
>>> ds = ray.data.from_pandas(df)  
>>> encoder = OneHotEncoder(columns=["color"])
>>> encoder.fit_transform(ds).to_pandas()  
   color_blue  color_green  color_red
0           0            0          1
1           0            1          0
2           0            0          1
3           0            0          1
4           1            0          0
5           0            1          0

如果你对一个不在拟合数据集中的值进行独热编码,那么该值将被编码为零。

>>> df = pd.DataFrame({"color": ["yellow"]})
>>> batch = ray.data.from_pandas(df)  
>>> encoder.transform(batch).to_pandas()  
   color_blue  color_green  color_red
0           0            0          0

同样地,如果你对一个不常见的值进行独热编码,那么该值将被编码为零。

>>> encoder = OneHotEncoder(columns=["color"], max_categories={"color": 2})
>>> encoder.fit_transform(ds).to_pandas()  
   color_red  color_green
0          1            0
1          0            1
2          1            0
3          1            0
4          0            0
5          0            1
参数:
  • columns – 要单独编码的列。

  • max_categories – 每个列创建特征的最大数量。如果未为某一列指定值,则将为该列中的每个类别创建一个特征。

参见

MultiHotEncoder

如果你想编码单个列表元素,请使用 MultiHotEncoder

OrdinalEncoder

如果你的类别是有序的,你可能想使用 OrdinalEncoder

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

方法

deserialize

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

fit

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

fit_transform

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

preferred_batch_format

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

serialize

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

transform

转换给定的数据集。

transform_batch

转换单个批次的数据。