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([
... [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) |
返回每个样本到决策边界的每个样本的距离。 |
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 估算器实例。 |