OneVsRestClassifier#

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

One-vs-the-rest (OvR) 多类策略。

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

OneVsRestClassifier 也可以用于多标签分类。要使用此功能,请在调用 .fit 时为目标 y 提供一个指示矩阵。换句话说,目标标签应格式化为一个二维二进制(0/1)矩阵,其中 [i, j] == 1 表示样本 i 中存在标签 j。该估计器使用二元相关方法执行多标签分类,这涉及为每个标签独立训练一个二元分类器。

更多信息请参阅 用户指南

Parameters:
estimatorestimator object

一个回归器或分类器,实现 fit 。 当传递一个分类器时,优先使用 decision_function ,如果不可用,则回退到 predict_proba 。 当传递一个回归器时,使用 predict

n_jobsint, default=None

用于计算的作业数: n_classes 个 one-vs-rest 问题并行计算。

None 表示 1,除非在 joblib.parallel_backend 上下文中。 -1 表示使用所有处理器。有关更多详细信息,请参阅 Glossary

Changed in version 0.20: n_jobs 默认值从 1 改为 None

verboseint, default=0

详细级别,如果非零,则打印进度消息。 低于 50 时,输出发送到 stderr。否则,输出发送到 stdout。消息的频率随着详细级别的增加而增加,报告所有迭代在 10。有关更多详细信息,请参阅 joblib.Parallel

Added in version 1.1.

Attributes:
estimators_list of n_classes estimators

用于预测的估计器。

classes_array, shape = [ n_classes ]

类别标签。

n_classes_int

Number of classes.

label_binarizer_LabelBinarizer object

用于将多类标签转换为二进制标签并反之的对象。

multilabel_boolean

是否这是一个多标签分类器。

n_features_in_int

fit 期间看到的特征数量。仅当基础估计器在拟合时暴露此类属性时才定义。

Added in version 0.24.

feature_names_in_ndarray of shape ( n_features_in_ ,)

fit 期间看到的特征名称。仅当基础估计器在拟合时暴露此类属性时才定义。

Added in version 1.0.

See also

OneVsOneClassifier

One-vs-one 多类策略。

OutputCodeClassifier

(Error-Correcting) Output-Code 多类策略。

sklearn.multioutput.MultiOutputClassifier

扩展估计器以进行多标签分类的另一种方法。

sklearn.preprocessing.MultiLabelBinarizer

将可迭代对象转换为二进制指示矩阵。

Examples

>>> import numpy as np
>>> from sklearn.multiclass import OneVsRestClassifier
>>> from sklearn.svm import SVC
>>> X = np.array([
...     [10, 10],
...     [8, 10],
...     [-5, 5.5],
...     [-5.4, 5.5],
...     [-20, -20],
...     [-15, -20]
... ])
>>> y = np.array([0, 0, 1, 1, 2, 2])
>>> clf = OneVsRestClassifier(SVC()).fit(X, y)
>>> clf.predict([[-19, -20], [9, 9], [-5, 5]])
array([2, 0, 1])
decision_function(X)#

决策函数用于OneVsRestClassifier。

返回每个样本与每个类别的决策边界的距离。这只能用于实现了 decision_function 方法的估计器。

Parameters:
X形状为(n_samples, n_features)的类数组

输入数据。

Returns:
T形状为(n_samples, n_classes)的类数组,或形状为(n_samples,)的类数组,用于二分类。

调用最终估计器的 decision_function 的结果。

Changed in version 0.19: 输出形状更改为 (n_samples,) ,以符合scikit-learn对二分类的约定。

fit(X, y, **fit_params)#

拟合底层估计器。

Parameters:
X{array-like, sparse matrix},形状为 (n_samples, n_features)

数据。

y{array-like, sparse matrix},形状为 (n_samples,) 或 (n_samples, n_classes)

多类目标。一个指示矩阵会启用多标签分类。

**fit_paramsdict

传递给每个子估计器的 estimator.fit 方法的参数。

Added in version 1.4: 仅在 enable_metadata_routing=True 时可用。有关更多详细信息,请参见 Metadata Routing 用户指南

Returns:
selfobject

已拟合估计器的实例。

get_metadata_routing()#

获取此对象的元数据路由。

请查看 用户指南 以了解路由机制的工作原理。

Added in version 1.4.

Returns:
routingMetadataRouter

MetadataRouter 封装的 路由信息。

get_params(deep=True)#

获取此估计器的参数。

Parameters:
deepbool, 默认=True

如果为True,将返回此估计器和包含的子对象(也是估计器)的参数。

Returns:
paramsdict

参数名称映射到它们的值。

property multilabel_#

是否这是一个多标签分类器。

property n_classes_#

Number of classes. 类的数量。

partial_fit(X, y, classes=None, **partial_fit_params)#

部分拟合底层估计器。

当内存不足以训练所有数据时,应使用此方法。可以将数据块在多次迭代中传递。

Parameters:
X{array-like, sparse matrix},形状为 (n_samples, n_features)

数据。

y{array-like, sparse matrix},形状为 (n_samples,) 或 (n_samples, n_classes)

多类目标。指示矩阵启用多标签分类。

classesarray,形状为 (n_classes, )

在所有 partial_fit 调用中的类别。 可以通过 np.unique(y_all) 获得,其中 y_all 是整个数据集的目标向量。 此参数仅在第一次调用 partial_fit 时需要,后续调用可以省略。

**partial_fit_paramsdict

传递给每个子估计器的 estimator.partial_fit 方法的参数。

Added in version 1.4: 仅在 enable_metadata_routing=True 时可用。有关更多详细信息,请参见 Metadata Routing User Guide

Returns:
selfobject

部分拟合的估计器实例。

predict(X)#

使用底层估计器预测多类目标。

Parameters:
X{array-like, sparse matrix},形状为 (n_samples, n_features)

数据。

Returns:
y{array-like, sparse matrix},形状为 (n_samples,) 或 (n_samples, n_classes)

预测的多类目标。

predict_proba(X)#

概率估计。

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

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

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

Parameters:
X{array-like, sparse matrix} of shape (n_samples, n_features)

输入数据。

Returns:
Tarray-like of shape (n_samples, n_classes)

返回模型中每个样本在每个类别的概率,其中类别按 self.classes_ 中的顺序排列。

score(X, y, sample_weight=None)#

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

在多标签分类中,这是子集准确率,这是一个严格的指标,因为你要求每个样本的每个标签集都被正确预测。

Parameters:
X形状为 (n_samples, n_features) 的类数组

测试样本。

y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组

` X`的真实标签。

sample_weight形状为 (n_samples,) 的类数组,默认=None

样本权重。

Returns:
scorefloat

self.predict(X) 相对于 y 的平均准确率。

set_params(**params)#

设置此估计器的参数。

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

Parameters:
**paramsdict

估计器参数。

Returns:
selfestimator instance

估计器实例。

set_partial_fit_request(*, classes: bool | None | str = '$UNCHANGED$') OneVsRestClassifier#

Request metadata passed to the partial_fit method.

Note that this method is only relevant if enable_metadata_routing=True (see sklearn.set_config ). Please see User Guide on how the routing mechanism works.

The options for each parameter are:

  • True : metadata is requested, and passed to partial_fit if provided. The request is ignored if metadata is not provided.

  • False : metadata is not requested and the meta-estimator will not pass it to partial_fit .

  • None : metadata is not requested, and the meta-estimator will raise an error if the user provides it.

  • str : metadata should be passed to the meta-estimator with this given alias instead of the original name.

The default ( sklearn.utils.metadata_routing.UNCHANGED ) retains the existing request. This allows you to change the request for some parameters and not others.

Added in version 1.3.

Note

This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a Pipeline . Otherwise it has no effect.

Parameters:
classesstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing for classes parameter in partial_fit .

Returns:
selfobject

The updated object.

set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') OneVsRestClassifier#

Request metadata passed to the score method.

Note that this method is only relevant if enable_metadata_routing=True (see sklearn.set_config ). Please see User Guide on how the routing mechanism works.

The options for each parameter are:

  • True : metadata is requested, and passed to score if provided. The request is ignored if metadata is not provided.

  • False : metadata is not requested and the meta-estimator will not pass it to score .

  • None : metadata is not requested, and the meta-estimator will raise an error if the user provides it.

  • str : metadata should be passed to the meta-estimator with this given alias instead of the original name.

The default ( sklearn.utils.metadata_routing.UNCHANGED ) retains the existing request. This allows you to change the request for some parameters and not others.

Added in version 1.3.

Note

This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a Pipeline . Otherwise it has no effect.

Parameters:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing for sample_weight parameter in score .

Returns:
selfobject

The updated object.