sklearn.multiclass.OneVsRestClassifier

class sklearn.multiclass.OneVsRestClassifier(estimator, *, n_jobs=None)

[源码]

一对一(OvR)的多类/多标签策略

也称为“一对多”,此策略包括为每个类配备一个分类器。对于每个分类器,该分类将与所有其他分类进行拟合。除了其计算效率(仅n_classes 需要分类器)之外,这种方法的一个优点是其可解释性。由于每个类别仅由一个和一个分类器表示,因此可以通过检查其对应的分类器来获取有关该类别的知识。这是用于多类分类的最常用策略,并且是合理的默认选择。

此策略还可以用于多标签学习,例如,通过拟合2d矩阵(如果样本i具有标签j,则单元[i,j]为1,否则为0),将分类器用于预测多个标签。

在多标签学习文献中,OvR也被称为二进制相关方法。

用户指南中阅读更多内容。

参数 说明
estimator estimator object
一种实现拟合决策函数(decision_function)预测概率(predict_proba)之一的估计对象。
n_jobs int or None, optional (default=None)
用于计算的数量。None除非joblib.parallel_backend上下文中,否则表示1 。 -1表示使用所有处理器。有关 更多详细信息,请参见词汇表
v0.20版中已更改:n_jobs默认从1更改为None
属性 说明
estimators_ list of n_classes estimators
用于预测的估计量。
classes_ array, shape = [n_classes]
类标签。
n_classes_ int
类数。
label_binarizer_ LabelBinarizer object
用于将多类标签转换为二进制标签的对象,反之亦然。
multilabel_ boolean
是否是多标签分类器

实例

>>> import numpy as np
>>> from sklearn.multiclass import OneVsRestClassifier
>>> from sklearn.svm import SVC
>>> X = np.array([
...     [1010],
...     [810],
...     [-55.5],
...     [-5.45.5],
...     [-20-20],
...     [-15-20]
... ])
>>> y = np.array([001122])
>>> clf = OneVsRestClassifier(SVC()).fit(X, y)
>>> clf.predict([[-19-20], [99], [-55]])
array([201])
方法 说明
decision_function(X) 返回每个样本到决策边界的每个样本的距离。
fit(X, y) 拟合基础估计量。
get_params([deep]) 获取此估计量的参数。
partial_fit(X, y[, classes]) 部分拟合基础估计量
predict(X) 使用基础估计量预测多类别目标。
predict_proba(X) 概率估计。
score(X, y[, sample_weight]) 返回给定测试数据和标签上的平均准确度。
set_params(**params) 设置此估算量的参数。
__init__(estimator, *, n_jobs=None)

[源码]

初始化self, 请参阅help(type(self))以获得准确的说明。

decision_function(X)

[源码]

返回每个样本到决策边界的每个样本的距离。这只能与实现decision_function方法的估计器一起使用。

参数 说明
X array-like of shape (n_samples, n_features)
返回值 说明
T array-like of shape (n_samples, n_classes)
*在版本0.19中进行了更改:*输出形状已更改为(n_samples,)符合scikit-learn二进制分类的约定。
fit(X, y)

[源码]

拟合基础估计量。

参数 说明
X (sparse) array-like of shape (n_samples, n_features)
数据。
y (sparse) array-like of shape (n_samples,) or (n_samples, n_classes)
多类别目标。指标矩阵可打开多标签分类。
返回值
self
get_params(deep=True)

[源码]

获取此估计量的参数。

参数 说明
deep bool, default=True
如果为True,则将返回此估算量和作为估算量的所包含子对象的参数。
返回值 说明
params mapping of string to any
参数名称映射到其值。
property multilabel_

是否是多标签分类器

partial_fit(X, y, classes=None)

[源码]

部分拟合基础估计量

当内存不足以训练所有数据时应使用。数据块可以多次迭代传递。

参数 说明
X (sparse) array-like of shape (n_samples, n_features)
数据
y (sparse) array-like of shape (n_samples,) or (n_samples, n_classes)
多类别目标。指标矩阵可打开多标签分类。
classes array, shape (n_classes, )
所有对partial_fit的调用中的类。可以通过获得np.unique(y_all),其中y_all是整个数据集的目标向量。仅在partial_fit的第一次调用中需要此参数,而在后续调用中可以将其省略。
返回值
self
predict(X)

[源码]

使用基础估计量预测多类别目标。

参数 说明
X (sparse) array-like of shape (n_samples, n_features)
数据
返回值 说明
y (sparse) array-like of shape (n_samples,) or (n_samples, n_classes)
预测的多类别目标。
predict_proba(X)

[源码]

概率估计。

所有类别的返回估算值按类别标签排序。

请注意,在多标签情况下,每个样本可以具有任意数量的标签。这将返回给定样本具有相关标签的边际概率。例如,两个标签都具有90%的概率应用于给定样品,这是完全一致的。

在单标签多类情况下,返回矩阵的行总和为1。

参数 说明
X array-like of shape (n_samples, n_features)
返回值 说明
T (sparse) array-like of shape (n_samples, n_classes)
返回模型中每个类的样本概率,其中类按顺序排序self.classes_
score(X, y, sample_weight=None)

[源码]

返回给定测试数据和标签上的平均准确度。

在多标签分类中,这是子集准确性,这是一个苛刻的指标,因为您需要为每个样本正确预测每个标签集。

参数 说明
X array-like of shape (n_samples, n_features)
测试样本
y array-like of shape (n_samples,) or (n_samples, n_outputs)
X的真实标签。
sample_weight array-like of shape (n_samples,), default=None
样本权重。
返回值 说明
score float
self.predict(X) wrt. y.的平均准确度。
set_params(**params)

[源码]

设置此估算器的参数。

该方法适用于简单的估计器以及嵌套对象(例如 pipelines)。后者具有形式的参数, <component>__<parameter>以便可以更新嵌套对象的每个组件。

参数 说明
**params dict
估算器参数。
返回值 说明
self object
估算器实例。

sklearn.multiclass.OneVsRestClassifier使用实例