标签二值化器#
- 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
。
- 如果输入到 transform 的数据是稀疏矩阵,则为
另请参阅
标签二值化 (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_transform
中threshold
参数的元数据路由。
- 返回值:
- selfobject
更新后的对象。
- set_output(*, transform=None)[source]#
设置输出容器。
请参阅 介绍 set_output API,了解如何使用此 API 的示例。
- 参数:
- transform{"default", "pandas", "polars"},默认为 None
配置
transform
和fit_transform
的输出。"default"
:转换器的默认输出格式"pandas"
:DataFrame 输出"polars"
:Polars 输出None
:转换配置保持不变
版本 1.4 中新增:
"polars"
选项已添加。
- 返回值:
- self估计器实例
估计器实例。