sklearn.preprocessing.LabelBinarizer¶
class sklearn.preprocessing.LabelBinarizer(*, neg_label=0, pos_label=1, sparse_output=False)
以一对一的方式对标签进行二值化
scikit-learn中提供了几种回归和二进制分类算法。将这些算法扩展到多类分类的一种简单方法是使用所谓的“一对多”方案。
在学习时,这仅仅是在每个类中学习一个回归器或二进制分类器。为此,需要将多类标签转换为二进制标签(属于或不属于该类)。LabelBinarizer使用转换方法使此过程变得简单。
在预测时,分配一个类别,相应的模型为其提供最大的信心。LabelBinarizer使用“逆变换”方法使这一点变得简单。
在用户指南中阅读更多内容。
参数 | 说明 |
---|---|
neg_label | int (default: 0) 负标签必须编码的值。 |
pos_label | int (default: 1) 必须对正标签进行编码的值。 |
sparse_output | boolean (default: False) 如果希望从转换返回的数组为稀疏CSR格式,则为true。 |
属性 | 说明 |
---|---|
classes_ | array of shape [n_class] 持有每个类别的标签。 |
y_type_ | str, 表示由utils.multiclass.type_of_target评估的目标数据的类型。可能的类型是“连续”,“连续多输出”,“二进制”,“多类”,“多类多输出”,“多标签指示符”和“未知”。 |
sparse_input_ | boolean, 如果要转换的输入数据是稀疏矩阵,则为True,否则为False。 |
另见:
函数以固定的类执行LabelBinarizer的转换操作。
sklearn.preprocessing.OneHotEncoder
分类特征使用one hot aka-of-K方案进行编码。
示例
>>> from sklearn import preprocessing
>>> lb = preprocessing.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 = preprocessing.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 (self, y) |
将标签调整为二进制 |
fit_transform (self, y) |
安装标签二值化器并将多类标签转换为二进制标签。 |
get_params (self[, deep]) |
获取此估计量的参数。 |
inverse_transform (self, Y[, threshold]) |
将二进制标签转换回多类标签 |
set_params (self, **params) |
设置此估算器的参数。 |
transform (self, y) |
将多类标签转换为二进制标签 |
__init__(self, *, neg_label=0, pos_label=1, sparse_output=False)
初始化self,有关准确的签名,请参见help(type(self))。
fit(self, y)
适合标签二值化器
参数 | 说明 |
---|---|
y | array of shape [n_samples,] or [n_samples, n_classes] 目标值。二维矩阵只能包含0和1,代表多标签分类。 |
返回值 | 说明 |
---|---|
self | returns an instance of self. |
fit_transform(self, y)
适合标签二值化器并将多类标签转换为二进制标签。
变换的输出有时被称为1-of-K编码方案。
参数 | 说明 |
---|---|
y | array or sparse matrix of shape [n_samples,] or [n_samples, n_classes] 目标值。二维矩阵只能包含0和1,代表多标签分类。稀疏矩阵可以是CSR,CSC,COO,DOK或LIL。 |
返回值 | 说明 |
---|---|
Y | array or CSR matrix of shape [n_samples, n_classes] 对于二进制问题,形状将为[n_samples,1]。 |
get_params(self, deep=True)
获取此估计量的参数。
参数 | 说明 |
---|---|
deep | bool, default=True 如果为True,则将返回此估算器和作为估算器的所包含子对象的参数。 |
返回值 | 说明 |
---|---|
params | mapping of string to any 参数名称映射到其值。 |
inverse_transform(self, Y, threshold=None)
将二进制标签转换回多类标签
参数 | 说明 |
---|---|
Y | numpy array or sparse matrix with shape [n_samples, n_classes] 目标值。在逆变换之前,所有稀疏矩阵都将转换为CSR。 |
threshold | float or None 二进制和多标签情况下使用的阈值。 当Y包含Decision_function(分类器)的输出时,请使用0。当Y包含predict_proba的输出时,使用0.5。 如果为None,则阈值假定为介于neg_label和pos_label之间。 |
返回值 | 说明 |
---|---|
y | numpy array or CSR matrix of shape [n_samples] Target values. |
注释
在二进制标签为小数(概率)的情况下,inverse_transform选择具有最大值的类。
通常,这允许将线性模型的Decision_function方法的输出直接用作inverse_transform的输入。
set_params(self, **params)
[源码] 设置此估算器的参数。
该方法适用于简单的估计器以及嵌套对象(例如管道)。后者的参数形式为<component>__<parameter>这样就可以更新嵌套对象的每个组件。
参数 | 说明 |
---|---|
**params | dict 估算器参数。 |
返回值 | 说明 |
---|---|
self | object 估算器实例。 |
transform(self, y)
将多类标签转换为二进制标签
变换的输出有时被一些作者称为1-of-K编码方案。
参数 | 说明 |
---|---|
y | array or sparse matrix of shape [n_samples,] or [n_samples, n_classes] 目标值。二维矩阵只能包含0和1,代表多标签分类。稀疏矩阵可以是CSR,CSC,COO,DOK或LIL。 |
返回值 | 说明 |
---|---|
Y | numpy array or CSR matrix of shape [n_samples, n_classes] 对于二进制问题,形状将为[n_samples,1]。 |