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。
- 如果传递给 `transform` 的输入数据是稀疏矩阵,则为
另请参阅
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_transform中threshold参数的元数据路由。
- 返回:
- selfobject
更新后的对象。
- set_output(*, transform=None)[source]#
设置输出容器。
有关如何使用 API 的示例,请参阅引入 set_output API。
- 参数:
- transform{“default”, “pandas”, “polars”}, default=None
配置
transform和fit_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 格式。