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
是否期望直接将预拟合模型传递给构造函数。如果为
True
,estimator
必须是已拟合的估计器。如果为False
,通过调用fit
拟合和更新estimator
。Added in version 1.6.
- Attributes:
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
(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.