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
一个实现 fit 和 decision_function 或 predict_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.
- estimators_list of
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
(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.