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_
intNumber 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.
- estimators_list of
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
(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$') OneVsRestClassifier #
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.