LabelBinarizer#

class sklearn.preprocessing.LabelBinarizer(*, neg_label=0, pos_label=1, sparse_output=False)[source]#

以一对多的方式对标签进行二值化。

scikit-learn 中有多种回归和二分类算法。将这些算法扩展到多分类情况的一种简单方法是使用所谓的一对多(one-vs-all)方案。

在学习时,这简单地包括为每个类别学习一个回归器或二分类器。这样做时,需要将多类别标签转换为二元标签(属于或不属于该类别)。LabelBinarizer 通过其 transform 方法使这一过程变得容易。

在预测时,将类别分配给相应模型给出最大置信度的那个。通过 inverse_transform 方法,LabelBinarizer 可以轻松完成此操作。

用户指南中阅读更多信息。

参数:
neg_labelint, 默认为 0

负标签必须编码的值。

pos_labelint, 默认为 1

正标签必须编码的值。

sparse_outputbool, 默认为 False

如果希望 transform 返回的数组采用稀疏 CSR 格式,则为 True。

属性:
classes_形状为 (n_classes,) 的 ndarray

保存每个类别的标签。

y_type_str

表示由 type_of_target 评估的目标数据类型。可能的类型有 ‘continuous’、‘continuous-multioutput’、‘binary’、‘multiclass’、‘multiclass-multioutput’、‘multilabel-indicator’ 和 ‘unknown’。

sparse_input_bool
如果 transform 的输入数据是以稀疏矩阵形式给出的,则为 True

否则为 False

另请参见

label_binarize

用于对具有固定类别的 LabelBinarizer 执行 transform 操作的函数。

OneHotEncoder

使用独热编码(又称 1-of-K 方案)对分类特征进行编码。

示例

>>> from sklearn.preprocessing import LabelBinarizer
>>> lb = LabelBinarizer()
>>> lb.fit([1, 2, 6, 4, 2])
LabelBinarizer()
>>> lb.classes_
array([1, 2, 4, 6])
>>> lb.transform([1, 6])
array([[1, 0, 0, 0],
       [0, 0, 0, 1]])

二元目标转换为列向量

>>> lb = LabelBinarizer()
>>> lb.fit_transform(['yes', 'no', 'no', 'yes'])
array([[1],
       [0],
       [0],
       [1]])

为多标签分类传入 2D 矩阵

>>> import numpy as np
>>> lb.fit(np.array([[0, 1, 1], [1, 0, 0]]))
LabelBinarizer()
>>> lb.classes_
array([0, 1, 2])
>>> lb.transform([0, 1, 2, 1])
array([[1, 0, 0],
       [0, 1, 0],
       [0, 0, 1],
       [0, 1, 0]])
fit(y)[source]#

拟合标签二值化器。

参数:
y形状为 (n_samples,) 或 (n_samples, n_classes) 的 ndarray

目标值。2D 矩阵应仅包含 0 和 1,表示多标签分类。

返回:
selfobject

返回实例本身。

fit_transform(y)[source]#

拟合标签二值化器/将多类别标签转换为二元标签。

transform 的输出有时被称为 1-of-K 编码方案。

参数:
y形状为 (n_samples,) 或 (n_samples, n_classes) 的 {ndarray, 稀疏矩阵}

目标值。2D 矩阵应仅包含 0 和 1,表示多标签分类。稀疏矩阵可以是 CSR, CSC, COO, DOK, 或 LIL 格式。

返回:
Y形状为 (n_samples, n_classes) 的 {ndarray, 稀疏矩阵}

对于二元问题,形状将为 (n_samples, 1)。稀疏矩阵将采用 CSR 格式。

get_metadata_routing()[source]#

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

请查看用户指南,了解路由机制的工作原理。

返回:
routingMetadataRequest

一个封装路由信息的 MetadataRequest

get_params(deep=True)[source]#

获取此估计器的参数。

参数:
deepbool, 默认为 True

如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:
paramsdict

参数名称映射到其值。

inverse_transform(Y, threshold=None)[source]#

将二元标签转换回多类别标签。

参数:
Y形状为 (n_samples, n_classes) 的 {ndarray, 稀疏矩阵}

目标值。所有稀疏矩阵在逆变换之前都会转换为 CSR 格式。

thresholdfloat, 默认为 None

在二元和多标签情况下使用的阈值。

Y 包含 decision_function(分类器)的输出时使用 0。当 Y 包含 predict_proba 的输出时使用 0.5。

如果为 None,则阈值假定为 neg_label 和 pos_label 之间的一半。

返回:
y_original形状为 (n_samples,) 的 {ndarray, 稀疏矩阵}

目标值。稀疏矩阵将采用 CSR 格式。

备注

当二元标签为分数(概率性)时,inverse_transform 会选择值最大的类别。通常,这允许将线性模型的 decision_function 方法的输出直接用作 inverse_transform 的输入。

set_inverse_transform_request(*, threshold: bool | None | str = '$UNCHANGED$') LabelBinarizer[source]#

请求传递给 inverse_transform 方法的元数据。

请注意,此方法仅在 enable_metadata_routing=True 时才相关(参见 sklearn.set_config)。请查看用户指南,了解路由机制的工作原理。

每个参数的选项有

  • True: 请求元数据,如果提供则传递给 inverse_transform。如果未提供元数据,则请求被忽略。

  • False: 不请求元数据,并且元估计器不会将其传递给 inverse_transform

  • None: 不请求元数据,如果用户提供元数据,则元估计器将引发错误。

  • str: 元数据应以这个给定别名而非原始名称传递给元估计器。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

版本 1.3 新增。

注意

此方法仅当此估计器用作元估计器的子估计器时才相关,例如在 Pipeline 内部使用。否则它没有效果。

参数:
thresholdstr, True, False, 或 None, 默认为 sklearn.utils.metadata_routing.UNCHANGED

inverse_transform 方法中,threshold 参数的元数据路由。

返回:
selfobject

更新后的对象。

set_output(*, transform=None)[source]#

设置输出容器。

请参阅介绍 set_output API,了解如何使用该 API 的示例。

参数:
transform{“default”, “pandas”, “polars”}, 默认为 None

配置 transformfit_transform 的输出。

  • "default": 转换器的默认输出格式

  • "pandas": DataFrame 输出

  • "polars": Polars 输出

  • None: 转换配置未改变

在 1.4 版本中新增:添加了 "polars" 选项。

返回:
self估计器实例

估计器实例。

set_params(**params)[source]#

设置此估计器的参数。

此方法适用于简单估计器以及嵌套对象(例如 Pipeline)。后者具有 <component>__<parameter> 形式的参数,以便可以更新嵌套对象的每个组件。

参数:
**paramsdict

估计器参数。

返回:
self估计器实例

估计器实例。

transform(y)[source]#

将多类别标签转换为二元标签。

transform 的输出有时被一些作者称为 1-of-K 编码方案。

参数:
y形状为 (n_samples,) 或 (n_samples, n_classes) 的 {array, 稀疏矩阵}

目标值。2D 矩阵应仅包含 0 和 1,表示多标签分类。稀疏矩阵可以是 CSR, CSC, COO, DOK, 或 LIL 格式。

返回:
Y形状为 (n_samples, n_classes) 的 {ndarray, 稀疏矩阵}

对于二元问题,形状将为 (n_samples, 1)。稀疏矩阵将采用 CSR 格式。