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
。
- 如果 transform 的输入数据是以稀疏矩阵形式给出的,则为
另请参见
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
配置
transform
和fit_transform
的输出。"default"
: 转换器的默认输出格式"pandas"
: DataFrame 输出"polars"
: Polars 输出None
: 转换配置未改变
在 1.4 版本中新增:添加了
"polars"
选项。
- 返回:
- self估计器实例
估计器实例。