标签二值化器#

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

将标签以一对多(one-vs-all)的方式二值化。

Scikit-learn 提供了几种回归和二元分类算法。将这些算法扩展到多类分类问题的一种简单方法是使用所谓的“一对多”方案。

在学习阶段,这只需为每个类别学习一个回归器或二元分类器。这样做需要将多类标签转换为二元标签(属于或不属于该类别)。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-hot 或者 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)

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

返回值:
selfobject

返回实例本身。

fit_transform(y)[source]#

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

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

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

目标值。二维矩阵应仅包含 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{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 中新增。

注意

只有在此估计器用作元估计器的子估计器时(例如,在 Pipeline 中使用)此方法才相关。否则,它无效。

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

inverse_transformthreshold 参数的元数据路由。

返回值:
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) 的 {数组、稀疏矩阵}

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

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

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