OneVsOneClassifier#

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

一对一多类策略。

这种策略包括为每对类别拟合一个分类器。 在预测时,选择获得最多投票的类别。由于需要拟合 n_classes * (n_classes - 1) / 2 个分类器, 这种方法通常比一对一多类策略慢,因为其复杂度为 O(n_classes^2)。然而,对于诸如核算法等不 太适合处理 n_samples 的算法,这种方法可能是有优势的。这是因为每个单独的学习问题只涉及 一小部分数据,而使用一对一多类策略时,完整的数据集会被使用 n_classes 次。

更多信息请参阅 用户指南

Parameters:
estimatorestimator object

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

n_jobsint, default=None

用于计算的作业数量: n_classes * (n_classes - 1) / 2 个一对一问题并行计算。

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

Attributes:
estimators_list of n_classes * (n_classes - 1) / 2 estimators

用于预测的估计器。

classes_numpy array of shape [n_classes]

包含标签的数组。

n_classes_int

Number of classes.

pairwise_indices_list, length = len(estimators_) , or None

训练估计器时使用的样本索引。 当 estimatorpairwise 标签为 False 时为 None

n_features_in_int

fit 过程中看到的特征数量。

Added in version 0.24.

feature_names_in_ndarray of shape ( n_features_in_ ,)

fit 过程中看到的特征名称。仅当 X 的特征名称为所有字符串时定义。

Added in version 1.0.

See also

OneVsRestClassifier

一对一多类策略。

OutputCodeClassifier

(错误校正)输出编码多类策略。

Examples

>>> from sklearn.datasets import load_iris
>>> from sklearn.model_selection import train_test_split
>>> from sklearn.multiclass import OneVsOneClassifier
>>> from sklearn.svm import LinearSVC
>>> X, y = load_iris(return_X_y=True)
>>> X_train, X_test, y_train, y_test = train_test_split(
...     X, y, test_size=0.33, shuffle=True, random_state=0)
>>> clf = OneVsOneClassifier(
...     LinearSVC(random_state=0)).fit(X_train, y_train)
>>> clf.predict(X_test[:10])
array([2, 1, 0, 2, 0, 2, 0, 1, 1, 1])
decision_function(X)#

决策函数用于 OneVsOneClassifier。

通过将成对分类置信水平的归一化总和添加到投票中来计算样本的决策值,以便在所有类的投票相等导致平局时消除决策值的歧义。

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

输入数据。

Returns:
Y形状为 (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形状为 (n_samples,) 的 array-like

多类目标。

**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 n_classes_#

Number of classes. 类的数量。

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

部分拟合底层估计器。

当内存不足以训练所有数据时,应使用此方法。可以将数据块在多次迭代中传递,其中第一次调用应包含所有目标变量的数组。

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

数据。

yarray-like of shape (n_samples,)

多类目标。

classesarray, shape (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 时可用。有关更多详细信息,请参阅:ref:Metadata Routing User Guide <metadata_routing>

Returns:
selfobject

部分拟合的底层估计器。

predict(X)#

估计X中每个样本的最佳类别标签。

这实现为 argmax(decision_function(X), axis=1) ,它将返回由估计器预测的每个可能类别对的决策结果中得票最多的类别标签。

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

数据。

Returns:
ynumpy array of shape [n_samples]

预测的多类别目标。

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$') OneVsOneClassifier#

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$') OneVsOneClassifier#

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.