dask_ml.preprocessing.LabelEncoder
dask_ml.preprocessing
.LabelEncoder¶
- class dask_ml.preprocessing.LabelEncoder(use_categorical: bool = True)¶
将标签编码为 0 到 n_classes-1 之间的值。
注意
这与 scikit-learn 版本在处理分类数据时有所不同。当传入分类的 y 时,此实现将使用分类信息进行标签编码和转换。在以下情况下,你将获得不同的结果:
你的类别不是单调递增的
你有一些未被观察到的类别
指定
use_categorical=False
以恢复 scikit-learn 的行为。- 参数
- use_categoricalbool,默认为 True
当 y 是具有分类 dtype 的 dask 或 pandas Series 时,是否使用分类 dtype 信息。
- 属性
- 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 时,如果可能,我们强烈建议使用 Categorical dask Series。这可以避免对值进行(可能昂贵的)扫描,并启用更快的 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)将标签转换为归一化编码。