dask_ml.preprocessing.LabelEncoder

dask_ml.preprocessing.LabelEncoder

class dask_ml.preprocessing.LabelEncoder(use_categorical: bool = True)[源代码]

将标签编码为介于 0 和 n_classes-1 之间的值。

备注

这与 scikit-learn 版本处理分类数据的方式不同。当传递分类 y 时,此实现将使用分类信息进行标签编码和转换。您将得到不同的结果。

  1. 你的类别不是单调递增的

  2. 你有未观察到的类别

指定 use_categorical=False 以恢复 scikit-learn 的行为。

参数
use_categoricalbool, 默认 True

y 是具有分类数据类型的 dask 或 pandas Series 时,是否使用分类数据类型信息。

属性
classes_形状为 (n_class,) 的数组

保存每个类的标签。

dtype_可选的 CategoricalDtype

对于分类 y,其 dtype 存储在此处。

示例

LabelEncoder 可以用于标签的规范化。

>>> from dask_ml import preprocessing
>>> le = preprocessing.LabelEncoder()
>>> le.fit([1, 2, 2, 6])
LabelEncoder()
>>> le.classes_
array([1, 2, 6])
>>> le.transform([1, 1, 2, 6]) 
array([0, 0, 1, 2]...)
>>> le.inverse_transform([0, 0, 1, 2])
array([1, 1, 2, 6])

它还可以用于将非数值标签(只要它们是可哈希且可比较的)转换为数值标签。

>>> le = preprocessing.LabelEncoder()
>>> le.fit(["paris", "paris", "tokyo", "amsterdam"])
LabelEncoder()
>>> list(le.classes_)
['amsterdam', 'paris', 'tokyo']
>>> le.transform(["tokyo", "tokyo", "paris"]) 
array([2, 2, 1]...)
>>> list(le.inverse_transform([2, 2, 1]))
['tokyo', 'tokyo', 'paris']

在使用 Dask 时,如果可能的话,我们强烈建议使用分类的 dask 系列。这避免了(可能昂贵的)值扫描,并启用了更快的 transform 算法。

>>> import dask.dataframe as dd
>>> import pandas as pd
>>> data = dd.from_pandas(pd.Series(['a', 'a', 'b'], dtype='category'),
...                       npartitions=2)
>>> le.fit_transform(data)
dask.array<values, shape=(nan,), dtype=int8, chunksize=(nan,)>
>>> le.fit_transform(data).compute()
array([0, 0, 1], dtype=int8)

方法

fit(y)

拟合标签编码器。

fit_transform(y)

拟合标签编码器并返回编码后的标签。

get_metadata_routing()

获取此对象的元数据路由。

get_params([deep])

获取此估计器的参数。

inverse_transform(y)

将标签转换回原始编码。

set_output(*[, transform])

设置输出容器。

set_params(**params)

设置此估计器的参数。

transform(y)

将标签转换为标准化编码。

__init__(use_categorical: bool = True)[源代码]