我正在使用 Sklearn 对不平衡数据集进行分类。Sklearn 计算过的false_positive_rate和true_positive_rate错误的;当我想计算 AUC 分数时,结果与我从混淆矩阵中得到的结果不同。
从 Sklearn 我得到以下混淆矩阵:
confusion = confusion_matrix(y_test, y_pred)
array([[ 9100, 4320],
[109007, 320068]], dtype=int64)
当然,我将输出理解为:
+-----------------------------------+------------------------+
| | Predicted | Predicted |
+-----------------------------------+------------------------+
| Actual | True positive = 9100 | False-negative = 4320 |
| Actual | False-positive = 109007 | True negative = 320068|
+--------+--------------------------+------------------------+
但是,对于 FPR 和 TPR,我得到了以下结果:
false_positive_rate, true_positive_rate, thresholds = roc_curve(y_test, y_pred)
(false_positive_rate, true_positive_rate)
(array([0. , 0.3219076, 1. ]),
array([0. , 0.7459488, 1. ]))
结果与confusion_matrix. 根据我的表格,FPR实际上是FNR,而TPR实际上是TNR。然后我检查了混淆矩阵文档,我发现:
因此,在二元分类中,真负数为 C0,0,假负数为 C1,0,真正数为 C1,1,假正数为 C0,1。
这意味着confusion_matrix,根据 Sklearn,看起来像这样:
+-----------------------------------+---------------------------+
| | Predicted | Predicted |
+-----------------------------------+---------------------------+
| Actual | True-Positive = 320068 | False-Negative = 109007 |
| Actual | False-Positive = 4320 | True-Negative = 9100 |
+--------+--------------------------+---------------------------+
根据该理论,对于二元分类,稀有类表示为正类。
为什么 Sklearn 将多数类视为积极的?