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_
intNumber of classes.
- pairwise_indices_list, length =
len(estimators_)
, orNone
训练估计器时使用的样本索引。 当
estimator
的pairwise
标签为 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.
- estimators_list of
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
(seesklearn.set_config
). Please see User Guide on how the routing mechanism works.The options for each parameter are:
True
: metadata is requested, and passed topartial_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 topartial_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 inpartial_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
(seesklearn.set_config
). Please see User Guide on how the routing mechanism works.The options for each parameter are:
True
: metadata is requested, and passed toscore
if provided. The request is ignored if metadata is not provided.False
: metadata is not requested and the meta-estimator will not pass it toscore
.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 inscore
.
- Returns:
- selfobject
The updated object.