LabelBinarizer#

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

以一对多方式将标签二值化。

scikit-learn 中提供了几种回归和二元分类算法。将这些算法扩展到多类别分类场景的一个简单方法是使用所谓的“一对所有” (one-vs-all) 方案。

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

在预测时,分配给对应模型给出最高置信度的类别。 LabelBinarizer 通过 inverse_transform 方法简化了这一过程。

用户指南 中阅读更多内容。

参数:
neg_labelint, default=0

编码负标签的值。

pos_labelint, default=1

编码正标签的值。

sparse_outputbool, default=False

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

属性:
classes_ndarray of shape (n_classes,)

包含每个类别的标签。

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` 执行转换操作的函数。

OneHotEncoder

使用独热编码(也称为 one-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]#

拟合标签二值化器。

参数:
yndarray of shape (n_samples,) or (n_samples, n_classes)

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

返回:
selfobject

返回实例本身。

fit_transform(y)[source]#

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

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

参数:
y{ndarray, sparse matrix} of shape (n_samples,) or (n_samples, n_classes)

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

返回:
Y{ndarray, sparse matrix} of shape (n_samples, n_classes)

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

get_metadata_routing()[source]#

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

请查阅 用户指南,了解路由机制如何工作。

返回:
routingMetadataRequest

封装路由信息的 MetadataRequest

get_params(deep=True)[source]#

获取此估计器的参数。

参数:
deepbool, default=True

如果为 True,将返回此估计器以及包含的子对象(如果它们是估计器)的参数。

返回:
paramsdict

参数名称映射到其值。

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

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

参数:
Y{ndarray, sparse matrix} of shape (n_samples, n_classes)

目标值。所有稀疏矩阵在反向转换前都会被转换为 CSR。

thresholdfloat, default=None

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

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

如果为 None,则假定阈值位于 `neg_label` 和 `pos_label` 的中间。

返回:
y_original{ndarray, sparse matrix} of shape (n_samples,)

目标值。稀疏矩阵将是 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 中新增。

参数:
thresholdstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

用于 inverse_transformthreshold 参数的元数据路由。

返回:
selfobject

更新后的对象。

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

设置输出容器。

有关如何使用 API 的示例,请参阅引入 set_output API

参数:
transform{“default”, “pandas”, “polars”}, default=None

配置 transformfit_transform 的输出。

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

  • "pandas": DataFrame 输出

  • "polars": Polars 输出

  • None: 转换配置保持不变

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

返回:
selfestimator instance

估计器实例。

set_params(**params)[source]#

设置此估计器的参数。

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

参数:
**paramsdict

估计器参数。

返回:
selfestimator instance

估计器实例。

transform(y)[source]#

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

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

参数:
y{array, sparse matrix} of shape (n_samples,) or (n_samples, n_classes)

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

返回:
Y{ndarray, sparse matrix} of shape (n_samples, n_classes)

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