首页 > 解决方案 > 如何正确理解混淆矩阵和分类报告

问题描述

我知道这个问题在某种程度上是重复的,但我所看到的答案都没有明确解决我的担忧,所以我想再次询问混淆矩阵,并classification_report针对我的案例。

一般来说,我使用随机森林分类器来预测用户是否返回我的网页或 1 = 'Return' 和 0 = 'No return'

  1. 在训练和预测数据之后,我运行了一些评估指标,如下所示:
print('Precision score: {:.2f}'.format(precision_score(y_test, y_pred)))
print('Recall_score score: {:.2f}'.format(recall_score(y_test, y_pred)))
print('AUC.ROC score: {:.2f}'.format(roc_auc_score(y_test, y_pred)))

精度分数:0.63
Recall_score 分数:0.16
AUC.ROC 分数:0.56

在这一点上,我的理解是结果代表“返回”(值 = 1)的观点,这recall = 0.16意味着返回用户的百分比被正确识别。

所以我的第一个问题是:到目前为止我的理解是否正确?

  1. 我计算了混淆矩阵并classification_report确认了上述结果:

print(confusion_matrix(y_test, y_pred))

[[99981 3250]

[28799 5447]]

从这个混淆矩阵输出中,计算 Precision 和 Recall 返回不同的值(分别为 0.97 和 0.78)。

对于classification_report

print(classification_report(y_test, y_pred))

               precision    recall  f1-score   support

           0       0.78      0.97      0.86    103231
           1       0.63      0.16      0.25     34246

从分类报告中,我的假设是我对问题 (1) 的理解是正确的,并且上面的混淆矩阵结果代表“不返回”用户。

所以我的第二个问题:我上面的结论正确吗?如果是,那么为什么混淆矩阵会返回“不返回”用户的值而不是“返回”,以及如何为“返回”用户计算类似的混淆矩阵?

标签: pythonconfusion-matrix

解决方案


推荐阅读