二元分类任务的错误率计算

机器学习领域,特别是在二元分类任务中,评估模型性能的一个重要指标是错误率,它包括假阳性率(False Positive Rate, FPR)和假阴性率(False Negative Rate, FNR)。这些指标可以帮助理解模型在不同决策阈值下的表现,从而做出更加合理的决策。本文将介绍如何计算这些错误率,并展示相应的代码示例。

参数说明

在计算错误率之前,需要了解几个关键参数:

  • y_true:真实标签数组,形状为(n_samples,),包含二元分类的标签,通常是{-1, 1}或{0, 1}。
  • y_score:预测得分数组,形状为(n_samples,),可以是正类的概率估计、置信度值或未经阈值处理的决策度量。
  • pos_label:正类的标签,如果y_true中的标签不是{-1, 1}或{0, 1},则需要明确指定。
  • sample_weight:样本权重数组,形状为(n_samples,),用于调整每个样本在计算中的重要性。

返回值

计算错误率后,可以得到以下返回值:

  • fpr:假阳性率数组,形状为(n_thresholds,),表示在不同阈值下的假阳性率。
  • fnr:假阴性率数组,形状为(n_thresholds,),表示在不同阈值下的假阴性率。
  • thresholds:阈值数组,形状为(n_thresholds,),表示用于计算FPR和FNR的阈值。

代码示例

以下是使用Python中的scikit-learn库计算错误率的示例代码:

import numpy as np from sklearn.metrics import det_curve # 真实标签 y_true = np.array([0, 0, 1, 1]) # 预测得分 y_scores = np.array([0.1, 0.4, 0.35, 0.8]) # 计算错误率 fpr, fnr, thresholds = det_curve(y_true, y_scores) # 打印结果 print("FPR:", fpr) print("FNR:", fnr) print("Thresholds:", thresholds)

可视化DET曲线

除了计算错误率,还可以将这些数据可视化为DET曲线,以更直观地展示模型在不同阈值下的表现。这可以通过使用scikit-learn中的DetCurveDisplay类来实现。

from sklearn.metrics import DetCurveDisplay # 创建DET曲线显示对象 display = DetCurveDisplay.from_estimator(estimator=None, X=y_true, y_true=y_true, y_scores=y_scores) # 显示DET曲线 display.plot()
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485