CalibratedClassifierCV#
- class sklearn.calibration.CalibratedClassifierCV(estimator=None, *, method='sigmoid', cv=None, n_jobs=None, ensemble=True)#
概率校准使用等渗回归或逻辑回归。
该类使用交叉验证来同时估计分类器的参数并随后校准分类器。默认情况下,当
ensemble=True
时,对于每个cv分割,它 将基本估计器的副本拟合到训练子集,并使用测试子集进行校准。对于预测,这些单独校准的分类器的预测概率将被平均。当ensemble=False
时,交叉验证用于通过:func:~sklearn.model_selection.cross_val_predict
获得无偏预测,然后 用于校准。对于预测,使用所有数据训练的基本估计器。这是为:class:~sklearn.svm.SVC
和:class:~sklearn.svm.NuSVC
估计器实现的预测方法(参见:ref:用户指南 <scores_probabilities>
了解详情)。已经拟合的分类器可以通过参数
cv="prefit"
进行校准。在这种情况下,不使用交叉验证,所有提供的数据都用于校准。用户必须手动确保模型拟合和校准的数据是 disjoint 的。校准基于
estimator
的:term:decision_function
方法(如果存在),否则基于:term:predict_proba
。更多信息请参阅:ref:
用户指南 <calibration>
。- Parameters:
- estimatorestimator instance, default=None
需要校准其输出以提供更准确的
predict_proba
输出的分类器。默认分类器是 一个:class:~sklearn.svm.LinearSVC
。Added in version 1.2.
- method{‘sigmoid’, ‘isotonic’}, default=’sigmoid’
用于校准的方法。可以是’sigmoid’,对应于Platt方法(即逻辑回归模型)或 ‘isotonic’,这是一种非参数方法。不建议在太少的校准样本
(<<1000)
下使用等渗校准,因为它往往会过拟合。- cvint, cross-validation generator, iterable or “prefit”, default=None
确定交叉验证分割策略。 cv的可能输入包括:
None,使用默认的5折交叉验证,
整数,指定折数。
一个可迭代对象,生成(train, test)分割作为索引数组。
对于整数/None输入,如果
y
是二分类或多分类, 使用:class:~sklearn.model_selection.StratifiedKFold
。如果y
既不是二分类也不是多分类,使用:class:~sklearn.model_selection.KFold
。请参阅:ref:
用户指南 <cross_validation>
了解可以使用的各种 交叉验证策略。如果传递”prefit”,则假定
estimator
已经拟合,所有数据用于校准。Changed in version 0.22:
cv
默认值如果为None,从3折改为5折。- n_jobsint, default=None
并行运行的作业数。
None
表示1,除非在:obj:joblib.parallel_backend
上下文中。-1
表示使用所有处理器。基本估计器克隆在交叉验证迭代中并行拟合。因此,只有在
cv != "prefit"
时才会发生并行化。请参阅:term:
Glossary <n_jobs>
了解更多详情。Added in version 0.24.
- ensemblebool, default=True
当
cv
不是'prefit'
时,确定校准器的拟合方式。如果cv='prefit'
,则忽略。如果为
True
,estimator
使用训练数据拟合,并使用测试数据校准,对于每个cv
折。最终估计器 是n_cv
个拟合的分类器和校准器对的集合,其中n_cv
是交叉验证折数。输出是所有对预测概率的平均值。如果为
False
,cv
用于通过:func:~sklearn.model_selection.cross_val_predict
计算无偏预测,然后 用于校准。在预测时,使用的分类器是使用所有数据训练的estimator
。 注意,此方法也在:mod:sklearn.svm
估计器中内部实现,带有probabilities=True
参数。Added in version 0.24.
- Attributes:
- classes_ndarray of shape (n_classes,)
类别标签。
- 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.
- calibrated_classifiers_list (len()等于cv或1,如果
cv="prefit"
或ensemble=False
) 分类器和校准器对的列表。
当
cv="prefit"
时,拟合的estimator
和拟合的校准器。当
cv
不是”prefit”且ensemble=True
时,n_cv
个拟合的estimator
和校准器对。n_cv
是交叉验证折数。当
cv
不是”prefit”且ensemble=False
时,使用所有数据拟合的estimator
和拟合的校准器。
Changed in version 0.24: 当
ensemble=False
时,单个校准分类器的情况。
See also
calibration_curve
计算校准曲线的真实和预测概率。
References
[1]从决策树和朴素贝叶斯分类器获得校准的概率估计,B. Zadrozny & C. Elkan, ICML 2001
[2]将分类器得分转换为准确的多类概率估计,B. Zadrozny & C. Elkan, (KDD 2002)
[3]支持向量机的概率输出及其与正则化似然方法的比较,J. Platt, (1999)
[4]通过监督学习预测良好的概率,A. Niculescu-Mizil & R. Caruana, ICML 2005
Examples
>>> from sklearn.datasets import make_classification >>> from sklearn.naive_bayes import GaussianNB >>> from sklearn.calibration import CalibratedClassifierCV >>> X, y = make_classification(n_samples=100, n_features=2, ... n_redundant=0, random_state=42) >>> base_clf = GaussianNB() >>> calibrated_clf = CalibratedClassifierCV(base_clf, cv=3) >>> calibrated_clf.fit(X, y) CalibratedClassifierCV(...) >>> len(calibrated_clf.calibrated_classifiers_) 3 >>> calibrated_clf.predict_proba(X)[:5, :] array([[0.110..., 0.889...], [0.072..., 0.927...], [0.928..., 0.071...], [0.928..., 0.071...], [0.071..., 0.928...]]) >>> from sklearn.model_selection import train_test_split >>> X, y = make_classification(n_samples=100, n_features=2, ... n_redundant=0, random_state=42) >>> X_train, X_calib, y_train, y_calib = train_test_split( ... X, y, random_state=42 ... ) >>> base_clf = GaussianNB() >>> base_clf.fit(X_train, y_train) GaussianNB() >>> calibrated_clf = CalibratedClassifierCV(base_clf, cv="prefit") >>> calibrated_clf.fit(X_calib, y_calib) CalibratedClassifierCV(...) >>> len(calibrated_clf.calibrated_classifiers_) 1 >>> calibrated_clf.predict_proba([[-0.5, 0.5]]) array([[0.936..., 0.063...]])
- fit(X, y, sample_weight=None, **fit_params)#
拟合校准模型。
- Parameters:
- X形状为 (n_samples, n_features) 的类数组
训练数据。
- y形状为 (n_samples,) 的类数组
目标值。
- sample_weight形状为 (n_samples,) 的类数组,默认=None
样本权重。如果为 None,则样本权重相等。
- **fit_paramsdict
传递给底层分类器
fit
方法的参数。
- Returns:
- selfobject
返回 self 实例。
- get_metadata_routing()#
获取此对象的元数据路由。
请查看 用户指南 以了解路由机制的工作原理。
- Returns:
- routingMetadataRouter
MetadataRouter
封装的 路由信息。
- get_params(deep=True)#
获取此估计器的参数。
- Parameters:
- deepbool, 默认=True
如果为True,将返回此估计器和包含的子对象(也是估计器)的参数。
- Returns:
- paramsdict
参数名称映射到它们的值。
- predict(X)#
预测新样本的目标。
预测的类别是具有最高概率的类别, 因此可能与未校准分类器的预测不同。
- Parameters:
- X形状为 (n_samples, n_features) 的类数组
样本,如
estimator.predict
所接受。
- Returns:
- C形状为 (n_samples,) 的 ndarray
预测的类别。
- predict_proba(X)#
校准后的分类概率。
该函数根据每个类别返回一个测试向量数组X的校准分类概率。
- Parameters:
- X形状为 (n_samples, n_features) 的类数组
样本,如
estimator.predict_proba
所接受。
- Returns:
- C形状为 (n_samples, n_classes) 的 ndarray
预测的概率。
- 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_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') CalibratedClassifierCV #
Request metadata passed to the
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 tofit
if provided. The request is ignored if metadata is not provided.False
: metadata is not requested and the meta-estimator will not pass it tofit
.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 infit
.
- Returns:
- selfobject
The updated object.
- set_params(**params)#
设置此估计器的参数。
该方法适用于简单估计器以及嵌套对象(例如
Pipeline
)。后者具有形式为<component>__<parameter>
的参数,以便可以更新嵌套对象的每个组件。- Parameters:
- **paramsdict
估计器参数。
- Returns:
- selfestimator instance
估计器实例。
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') CalibratedClassifierCV #
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.