FixedThresholdClassifier#

class sklearn.model_selection.FixedThresholdClassifier(estimator, *, threshold='auto', pos_label=None, response_method='auto', prefit=False)#

二元分类器,手动设置决策阈值。

该分类器允许更改用于将后验概率估计(即 predict_proba 的输出)或决策分数(即 decision_function 的输出)转换为类别标签的默认决策阈值。

在这里,阈值不是优化的,而是设置为一个常数值。

更多信息请参阅 用户指南

Added in version 1.5.

Parameters:
estimatorestimator instance

我们希望为其优化预测期间使用的决策阈值的二元分类器,可以是已拟合或未拟合的。

threshold{“auto”} or float, default=”auto”

用于将后验概率估计(即 predict_proba 的输出)或决策分数(即 decision_function 的输出)转换为类别标签的决策阈值。当为 "auto" 时,如果使用 predict_proba 作为 response_method ,则阈值设置为 0.5,否则设置为 0(即 decision_function 的默认阈值)。

pos_labelint, float, bool or str, default=None

正类别的标签。用于处理 response_method 方法的输出。当 pos_label=None 时,如果 y_true{-1, 1}{0, 1} 中, pos_label 设置为 1,否则将引发错误。

response_method{“auto”, “decision_function”, “predict_proba”}, default=”auto”

分类器 estimator 对应于我们希望找到阈值的决策函数的方法。可以是:

  • 如果为 "auto" ,将按顺序尝试调用 "predict_proba""decision_function"

  • 否则,为 "predict_proba""decision_function" 之一。如果分类器未实现该方法,将引发错误。

prefitbool, default=False

是否期望直接将预拟合模型传递给构造函数。如果为 Trueestimator 必须是已拟合的估计器。如果为 False ,通过调用 fit 拟合和更新 estimator

Added in version 1.6.

Attributes:
estimator_estimator instance

预测时使用的已拟合分类器。

classes_ndarray of shape (n_classes,)

标签类。

n_features_in_int

fit 期间看到的特征数量。仅当底层估计器在拟合时暴露此属性时定义。

feature_names_in_ndarray of shape ( n_features_in_ ,)

fit 期间看到的特征名称。仅当底层估计器在拟合时暴露此属性时定义。

See also

sklearn.model_selection.TunedThresholdClassifierCV

基于某些指标并使用交叉验证后调整决策阈值的分类器。

sklearn.calibration.CalibratedClassifierCV

校准概率的估计器。

Examples

>>> from sklearn.datasets import make_classification
>>> from sklearn.linear_model import LogisticRegression
>>> from sklearn.metrics import confusion_matrix
>>> from sklearn.model_selection import FixedThresholdClassifier, train_test_split
>>> X, y = make_classification(
...     n_samples=1_000, weights=[0.9, 0.1], class_sep=0.8, random_state=42
... )
>>> X_train, X_test, y_train, y_test = train_test_split(
...     X, y, stratify=y, random_state=42
... )
>>> classifier = LogisticRegression(random_state=0).fit(X_train, y_train)
>>> print(confusion_matrix(y_test, classifier.predict(X_test)))
[[217   7]
 [ 19   7]]
>>> classifier_other_threshold = FixedThresholdClassifier(
...     classifier, threshold=0.1, response_method="predict_proba"
... ).fit(X_train, y_train)
>>> print(confusion_matrix(y_test, classifier_other_threshold.predict(X_test)))
[[184  40]
 [  6  20]]
property classes_#

标签类。

decision_function(X)#

决策函数使用拟合的估计器对 X 中的样本进行计算。

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

训练向量,其中 n_samples 是样本数量, n_features 是特征数量。

Returns:
decisionsndarray,形状为 (n_samples,)

由拟合的估计器计算的决策函数。

fit(X, y, **params)#

拟合分类器。

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

训练数据。

yarray-like,形状为 (n_samples,)

目标值。

**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{array-like, sparse matrix},形状为 (n_samples, n_features)

样本,如 estimator.predict 所接受的那样。

Returns:
class_labelsndarray,形状为 (n_samples,)

预测的类别。

predict_log_proba(X)#

预测使用拟合估计器的 X 的对数类别概率。

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

训练向量,其中 n_samples 是样本数量, n_features 是特征数量。

Returns:
log_probabilitiesndarray,形状为 (n_samples, n_classes)

输入样本的对数类别概率。

predict_proba(X)#

预测使用拟合估计器的 X 的类别概率。

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

训练向量,其中 n_samples 是样本数量, n_features 是特征数量。

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

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.