OutputCodeClassifier#

class sklearn.multiclass.OutputCodeClassifier(estimator, *, code_size=1.5, random_state=None, n_jobs=None)#

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

基于输出代码的策略包括用一个二进制代码(一个由0和1组成的数组)表示每个类别。在拟合时,为代码簿中的每一位训练一个二进制分类器。在预测时,分类器用于将新点投影到类别空间中,并选择最接近点的类别。这些策略的主要优点是,用户可以控制使用的分类器数量,以压缩模型(0 < code_size < 1)或使模型对错误更鲁棒( code_size > 1)。更多细节请参阅文档。

更多信息请参阅 用户指南

Parameters:
estimatorestimator object

一个实现 fitdecision_functionpredict_proba 的估计器对象。

code_sizefloat, default=1.5

用于创建代码簿的类别数量的百分比。一个介于0和1之间的数字将需要比一对多更少的分类器。一个大于1的数字将需要比一对多更多的分类器。

random_stateint, RandomState instance, default=None

用于初始化代码簿的生成器。为了在多次函数调用中获得可重复的输出,传递一个整数。参见 Glossary

n_jobsint, default=None

用于计算的作业数量:多类问题并行计算。

None 意味着1,除非在 joblib.parallel_backend 上下文中。 -1 意味着使用所有处理器。更多细节请参见 Glossary

Attributes:
estimators_list of int(n_classes * code_size) estimators

用于预测的估计器。

classes_ndarray of shape (n_classes,)

包含标签的数组。

code_book_ndarray of shape (n_classes, len(estimators_) )

包含每个类别代码的二进制数组。

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

OneVsRestClassifier

一对多多类策略。

OneVsOneClassifier

一对一多类策略。

References

[1]

“Solving multiclass learning problems via error-correcting output codes”, Dietterich T., Bakiri G., Journal of Artificial Intelligence Research 2, 1995.

[2]

“The error coding method and PICTs”, James G., Hastie T., Journal of Computational and Graphical statistics 7, 1998.

[3]

“The Elements of Statistical Learning”, Hastie T., Tibshirani R., Friedman J., page 606 (second-edition) 2008.

Examples

>>> from sklearn.multiclass import OutputCodeClassifier
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.datasets import make_classification
>>> X, y = make_classification(n_samples=100, n_features=4,
...                            n_informative=2, n_redundant=0,
...                            random_state=0, shuffle=False)
>>> clf = OutputCodeClassifier(
...     estimator=RandomForestClassifier(random_state=0),
...     random_state=0).fit(X, y)
>>> clf.predict([[0, 0, 0, 0]])
array([1])
fit(X, y, **fit_params)#

拟合底层估计器。

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

数据。

yarray-like,形状为 (n_samples,)

多类目标。

**fit_paramsdict

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

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

Returns:
selfobject

返回一个已拟合的 self 实例。

get_metadata_routing()#

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

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

Added in version 1.4.

Returns:
routingMetadataRouter

MetadataRouter 封装的 路由信息。

get_params(deep=True)#

获取此估计器的参数。

Parameters:
deepbool, 默认=True

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

Returns:
paramsdict

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

predict(X)#

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

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

数据。

Returns:
yndarray,形状为 (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_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') OutputCodeClassifier#

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.